본문 바로가기

정상을향해48

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.
PE File Format (2) 출처 : http://www.reversecore.com DOS Header Microsoft는 PE File Format을 만들 때 당시에 널리 사용되던 DOS 파일에 대한 하위 호환성을 고려해서 만들었다. 그 결과로 PE header 의 제일 앞부분에 기존 DOS EXE header 를 확장시킨 IMAGE_DOS_HEADER 구조체가 존재하는 것이다. typedef struct _IMAGE_DOS_HEADER { WORD e_magic; // DOS signature : 4D5A ("MZ") WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e_ss; WORD e_sp; WORD e_cs.. 2013. 11. 10.
PE File Format (1) 출처 : http://www.reversecore.com PE(Portable Executable) File Format PE 파일의 종류는 다음과 같다. ∙ 실행 파일 계열 : EXE, SCR ∙ 라이브러리 계열 : DLL, OCX ∙ 드라이버 계열 : SYS ∙ 오브젝트 파일 계열 : OBJ 엄밀히 따지자면 OBJ(오브젝트) 파일을 제외한 모든 파일들은 실행가능한 파일이다. DLL, SYS 파일 등은 쉘(Explorer.exe)에서 직접 실행 할 수는 없지만, 다른 형태의 방법(디버거, 서비스 등)을 이용하여 실행이 가능한 파일들이다. 간단한 설명을 위해 메모장(notepad.exe) 파일을 hex editor를 이용해 열어보자. 위의 그림은 notepad.exe 파일의 시작 부분이며, PE head.. 2013. 11. 10.