본문 바로가기

정상을향해/Program Analysis18

Python Hacking Programming (2) 파이썬 해킹 프로그래밍 (Python Hacking Programming) 저자 : 저스틴 지이츠출판사 : 에이콘 3장. 윈도우 디버거 개발[3.3] 디버그 이벤트 핸들러 구현 [3.3 디버그 이벤트 핸들러 구현]이벤트가 발생했을 때 디버거가 그 이벤트에 반응하기 위해서는 각 디버깅 이벤트에 대한 핸들러를 구현해야 한다. WaitForDebugEvent() 함수를 통해 이벤트가 발생할 때마다 DEBUG_EVENT 구조체를 매번 반환한다. 다음 DEBUG_EVENT 구조체를 살펴보자. typedef struct _DEBUG_EVENT { DWORD dwDebugEventCode; DWORD dwProcessId; DWORD dwThreadId; union { EXCEPTION_DEBUG_INFO Excep.. 2013. 11. 10.
Python Hacking Programming (1) 파이썬 해킹 프로그래밍 (Python Hacking Programming) 저자 : 저스틴 지이츠출판사 : 에이콘 3장. 윈도우 디버거 개발[3.1] 윈도우 디버거 개발[3.2] CPU 레지스터 상태 얻기 소스코드 입니다. 역시 소스코드에 오타가 좀 있었군요 . . . [3.1 윈도우 디버거 개발]프로세스를 디버깅하려면 어떤 식으로든 먼저 해당 프로세스를 디버거와 연결해야 한다. 그래서 디버깅할 프로세스를 실행시키거나, 이미 실행돼 있는 프로세스에 attach를 해야 한다. 프로세스를 실행시키는 경우는 디버거가 실행 바이너리를 직접 실행하는 것인데, 이 경우 해당 프로세스의 코드가 실행되기 전에 제어를 할 수 있다는 장점이 있다. 윈도우에서는 프로세스를 실행시킬 때 CreateProcess() 함수를 호.. 2013. 11. 10.
PE File Format (4) 출처 : http://www.reversecore.com/ IMAGE_NT_HEADERS : IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER32는 PE header 구조체 중에서 가장 크기가 크다. (64bit PE 파일의 경우 IMAGE_OPTIONAL_HEADER64 구조체를 사용한다.) typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 typedef struct _IMAGE_OPTIONAL_HEADER { WORD Magic.. 2013. 11. 10.
PE File Format (3) 출처 : http://www.reversecore.com NT Header 다음은 NT header 구조체 IMAGE_NT_HEADERS 이다. typedef struct _IMAGE_NT_HEADERS { DWORD Signature; // PE Signature : 50450000 ("PE"00) IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; * 출처 : Microsoft 의 Visual C++ 에서 제공하는 winnt.h (위 구조체는 32 bit 용이며, 64 bit 용은 세번째 멤버가 IMAGE_OPTIONAL_HEADER64로 되어있다.).. 2013. 11. 10.