목록전체 글 (420)
외로운 Nova의 작업실
해당 문서는 시험 전에 다시한번 봐야할 부분을 정리해보도록 하겠습니다. 1. 동기식 스트림암호화 비동기식 스트림 암호의 특징 - 동기식 스트림 암호와 비동기식 스트림 암호 동기식 스트림 암호 : 스트림 암호에서 키 스트림은 평문 혹은 암호문 스트림과 독립적인 암호를 말합니다. ex) One time pad : 암호화를 수행할때 랜덤하게 생성된 키 스트림을 사용합니다. 전수공격법으로 해독을 하여도 여러가지 버전의 평문을 얻게되므로 이론적으로 해독 불가능하다고 알려져 있습니다. 암호화와 복호화에서 상호 동기화가 필수입니다. 암호화에서 만든 키스트림을 복호화에서도 똑같이 키스트림을 만들어야하기때문에 입을 맞춰야하기때문이빈다. 전송도중 변조되어도 후속 암호문에 오류의 영향이 파급되지 않습니다. 암호스트림을 전송..
리버싱 엔지니어링 바이블에서 나온 함수호출 규약을 간단히 정리해보려고합니다. - 함수 호출 규약 __cdecl : 호출자가 스택을 정리합니다. __stdcall : 피호출자가 스택을 정리합니다. __fastcall : 인자가 2개라면 ecx와 edx를 사용합니다. __thiscall : c++에서 자주사용하는 함수로 ecx에 this 포인터가 담깁니다.
- 카나리 스택 카나리는 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법입니다. 카나리 값의 변조가 확인되면 프로세스는 강제로 종료됩니다. 카나리값의 첫번째 값은 leak을 방지하기위해 보통 null값입니다. - 카나리 할당 과정 1. 프로세스는 프로그램을 실행하고 카나리를 fs 세그먼트의 주소값을 설정합니다. 이때 fs 주소값이 설정되면 시스템은 arch_prctl()함수를 호출합니다. 2. 이후 fs 세그먼트 공간이 확보되면 프로그램이 작동하면서 fs세그먼트 시작부분으로부터 0x28번째 공간에 임의의 값으로 넣습니다. 3. 이후 카나리를 사용해야하는 프로그램은 이 카나리값을 사용합니다. - 카나리가 적용된 프로그램과 미..