pe
-
PE 구조를 공부하는 학생들을 위해 만든 pebook.exe (peviewer + 도움말)Util Tool 2020. 4. 27. 15:45
안녕하세요. 오늘은 그동안 배운 PE 파일 포맷 개념을 이용하여 만든 프로그램을 공유하려고 합니다. 이 프로그램은 저처럼 공부하는 학생분들이 책과 tool을 이용하여 공부하는 번거로움을 조금이라도 줄여보고자 만든 CLI환경의 프로그램입니다. 공부하면서 배운 내용을 정리하고 실습하는 겸 만들어 보았으며 저 또한 만들면서 많이 도움이 되었던 것 같습니다. 현재는 DOS, NT header 전반적인 내용들, IAT, EAT, Section 정보 정도만 확인 할 수 있고 도움말이 적혀있으며 추후에 심화 분석과 도움말을 추가할 예정입니다. 기존 뷰어들과의 차이점은 상세한 정보를 보여주고 있지는 않지만 PE를 처음 배우시는 분들이 접근하기 쉬운 개념들을 보여주고 있으며 이런식으로 선택해서 정보를 본 후에 궁금한 개..
-
PE 구조 (8) - 계산기의 PE 구조 / Import Directory (INT와 IAT 찾기)Knowledge/Reversing 2020. 3. 29. 03:10
#define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory 오늘 확인할 calc.exe의 ENTRY_IMPORT 이다. 이것은 어떤 것으로 구성되어 있을까? 우선 IMAGE_IMPORT_DESCRIPTOR 구조체를 보면 된다. IMAGE_IMPRT_DESCRIPTOR typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; // 0 for terminating null import descriptor DWORD OriginalFirstThunk; // INT (Import Name Table)' RVA } DUMMYUNIONNAME; DWORD TimeDateStamp; // 0 if ..
-
PE 구조 (8) - 계산기의 PE 구조 / IMAGE OPTIONAL HEADER - IMAGE DATA DIRECTORY 분석Knowledge/Reversing 2019. 9. 29. 17:21
오늘의 글은 IMAGE DATA DIRECTORY 분석 글이다. 복습차원에서 IMAGE DATA DIRECTORY의 배열의 정의된 의미를 확인해보자. #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 // Export Directory #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 // Import Directory #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 // Resource Directory #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 // Exception Directory #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 // Security Directory #defi..
-
PE 구조 (7) RVA to RAW 변환 방법Knowledge/Reversing 2019. 9. 28. 16:08
안녕하세요. 오늘은 계산기는 잠시 갔다 버리고 RVA를 RAW로 변환하는 방법에 대해서 알아보려 합니다. 하지만 예제로 계산기가 튀어 나올듯한 불길한 예감... 지난 섹션 헤더 글을 보신 분이라면 RVA가 어떤 녀석인지 대충 아실 것입니다. RAW는 파일 오프셋 값을 말한다. 다음에 작성할 data directory의 주소 맵핑을 하기 위해서는 RVA to RAW를 알아야한다. 역시 예를 들기 위해서 계산기를 사용해야 할 것 같다. """ 대망에 DataDirectory부분이다. 4바이트 변수 2개를 갖고 있는 구조체 배열로 하나당 8bytes씩 보면 된다. 첫번째는 가상주소 값이고 두번째는 사이즈를 표시한다. [0]에는 값이 없으므로 넘어가고 [1]인 Import값을 확인해 보자. 80 2B 01이 주..
-
PE 구조 (6) - 계산기의 PE 구조 / SECTION HeaderKnowledge/Reversing 2019. 9. 26. 13:07
오늘은 계산기의 SECTION HEADER 구조에 대해서 공부할 차례이다. 이번 챕터를 지나고 나면 저번글에서 언급하지 못했던 Image data directory를 볼 것이다. 우선 섹션 해더의 구조를 살펴보자. #define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORD PointerToL..
-
PE 구조 (5) - 계산기의 PE 구조 / NT HEADER - IMAGE OPTIONAL HEADER 분석Knowledge/Reversing 2019. 9. 25. 02:11
오늘은 계산기의 NT Header에서 IMAGE OPTIONAL HEADER에대해서 분석하려고 한다. 꽤나 중요한 녀석임으로 차근차근히 분석을 시작해보자. 우선 복습을 위하여 몇 가지 저번에 배운 내용을 확인해보자. 이것이 calc.exe의 NT header 영역이다. 그리고 NT header 구조체는 typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; 로 정의되어 있고 지난 포스터에서 FileHeader 부분을 알아봤었다. https://shineild-secu..
-
PE 구조 (4) - 계산기의 PE 구조 / NT HEADER - IMAGE FILE HEADER 분석Knowledge/Reversing 2019. 9. 20. 01:40
오늘 알아볼 내용은 NT Header이다. NT Header는 3가지 변수로 정의되어 있는 구조체이다. typedef struct _IMAGE_NT_HEADERS { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; Signatere는 4bytes 짜리 변수로 보통 50 45 00 00으로 되어있다. word가 아니라 dword로써 00 00까지 시그니쳐 범위라는 것을 명심하도록 하자. 그다음으로 나오는 것은 IMAGE_FILE_HEADER 구조체인 FileHeader이다. IMAGE_FILE_HEADER는 어떠한 구조체인..
-
PE 구조 (3) - 계산기의 PE 구조 / PE offset 확인하는 법Knowledge/Reversing 2019. 9. 18. 17:31
안녕하세요. 오랜만에 PE 구조 관련글을 다시 적게 되었습니다. 요즘 자격증 공부로 바빠서 하지 못했던 개인 공부들을 다시 시작하며 밀렸던 글들을 적어나가려고 한다. 인터넷에는 대부분 32bit notepad로 PE구조를 분석한 글들이 많이 있다. 그 이유는 아마 리버싱 핵심원리 책에서 예로 든 프로그램이 바로 이 메모장이여서 그런게 아닐까하는 생각이 든다. 그래서 지난번 글에선 필자도 메모장으로 글을 포스팅했었지만 이번엔 필자의 실습을 위해서 계산기를 직접 offset을 알아보려고 한다. 오늘 볼 파일은 calc.exe(x86)이다. feat.windows xp 오늘 필자가 분석할 큰 구조는 이렇게 나뉘어진다. Header DOS Header DOS Stub NT Header Section Header..