2024/12/02 2

Inline hook

inline hook 기술 개요 및 작동 원리함수의 진입점(function prologue)에 jmp code(0xE9)를 삽입해서 흐름을 변경하는 방법32bit 시스템에서 jmp 코드 피연산자는 점프할 위치에 대한 절대값이 아니라 현재 명령어가 저장된 위치를 기준으로 떨어진 거리를 상대적으로 계산한다.jmp code는 명령어와 피연산자를 포함 모두 5바이트 (x86기준)inline hook 사용시 주의사항jmp 코드로 흐름을 조작하더라도 정상적인 호출관계에 의한 stack frame 구조를 손상시키지 말아야한다. (function prologue , epilogue가 정상적으로 동작해야함)조작된 흐름이 끝나고 본래 위치로 되돌아 가는 과정에서 문제가 발생하지 않도록 강제화 해야한다. 32bit inli..

IAT hook

IAT = Import Address TableDLL 에서 가져다 쓴 함수들에대한 정보들을 가지고 있다고함묵시적인 로딩인 경우에만 남아있는다 PE (portable excutable) 파일 구조https://github.com/corkami/pics/blob/master/binary/pe101/pe101.pdf RVA (Relative Virutal Address)dll 이 가상메모리에 로딩이 되고 어떤 함수가 어디에 써있느냐를 나타낼떄 RVA를 통해 나타낸다. IAT hook 기술 개요실행 파일이 가지고 있는 IAT 영역 정보를 직접 조작하는 방식으로 피호출 API함수를 변경하는 기법C 언어 기반 응용 프로그램의 주요 함수들은 별도의 C Runtime Library(DLL) 로 구현되어 있으며 프로그램..