[Reversing] 스택프레임(Stack Frame) 스택프레임- 새로운 함수가 호출 될 때 호출 후 원래의 위치로 돌아갈 정보를 담고 있습니다.- ESP, EBP 레지스터를 사용해서 변수나 원복주소에 접근하는 방식입니다.- 즉, 함수가 호출 될때 그 함수가 가지는 공간 구조입니다.함수를 호출할 때 그 함수가 가지고 있는 공간으로 스택 프레임 구조는 함수 프롤로그 - 함수 원형 - 함수 에필로그로 구분할 수 있다. 스택 프레임 예제#include int main(){int x;printf("정수입력 : ");scanf_s("%d", &x);printf("%d\n", x);return 0;}[소스코드] 스택 프레임의 구조[예제 스택프레임 구조] [main() 함수의 스택 프레임] x64 dbg- 우선 m..
[Reversing] PE 파일 만들기④ 마지막으로 어셈코드를 제작할 것입니다.[Reversing] PE 파일 만들기①[Reversing] PE 파일 만들기②[Reversing] PE 파일 만들기③ 1. x64 dbg- 지금까지 만들어진 파일을 올려보겠습니다.- 해당 VA 주소는 코드섹션(.text Section)입니다.- 현재는 0으로 채워져 있으니 코드섹션에 어셈코드를 추가할 것입니다. [0x401000 x64 dbg] [.text Section PE] 2. .text Section- 이전 게시물에 있는 파일을 열어보시면 위와 같이 .text Section 부분이 0으로 채워져있습니다.- 이전에 말했듯이 해당(30h)부분에 어셈코드를 제작할 것입니다.- 200h 부터 추가할 것입니다. [어셈코드 추가..
[Reversing] PE 파일 만들기③ Dos Header ~ .text 섹션을 생성하고 내용을 채워 제작했습니다.[Reversing] PE 파일 만들기①[Reversing] PE 파일 만들기② 1. IMPORT Directory Table[Step1]- 먼저 IMAGE_DATA_DIRECTORY에서 IMPORT Table의 RVA값을 작성할 것입니다.- 저는 IMPORT Table의 RVA를 0x40으로 제작할 것입니다.- 이전 게시물에 MS-DOS Stub Program 0으로 채운 부분에 IDT를 작성한다고 했습니다.(참고) [IDT 지정 HxD] [Step2]- IMPORT Directory Table의 필드를 다시 보겠습니다.- Import Name Table RVA, Time Date Sta..
[Reversing] PE 파일 만들기② 현재까지 Dos Header ~ PE Header 부분까지 제작해 왔습니다.[Reversing] PE 파일 만들기①물론 추가적으로 수정해야 되는 부분도 있습니다.(IMAGE_DATA_DIRECTORY 크기만 잡아두고 왔죠)다음으로는 PE 파일의 마지막 구조체인 Section Header 제작할 것입니다. 1. IMAGE_SECTION_HEADER .text- IMAGE_SECTION_HEADER Size는 40 bytes 입니다.- .text Section의 속성 값에 대한 정보를 가지고 있습니다. - .text, .idata, .data과 같은 Sections이 Section Table(IMAGE_SECTION_HEADER의 배열) 입니다.- PE 파일은 cod..
[Reversing] PE 파일 만들기 ① 제작 과정은 간략한 설명으로 건너뛰고 넘어가는 부분이 많습니다.이전 게시물을 참조 및 PE Format 참조 직접 제작해 보는 것을 추전을 받아 작성합니다.직접 제작하다 보면 자신이 잘 몰랐거나 잘 못 이해하던 부분을 정확히 파악하고 제대로 공부할 수 있다고 생각합니다.CLI 기반, printf문 사용, 'Hello World !' 출력을 목적으로 제작할 것입니다. 1. IMAGE_DOS_HEADER- MZ는 IMAGE_DOS_HEADER의 Signature입니다.(4D5A = ASCII 값 "MZ")- 해당 구조체의 크기는 40h으로(64byte) 고정이며, 여러개의 필드로 구성되어있습니다.- IMAGE_DOS_HEADER의 구조체 중 e_lfanew가 PE ..
[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) ① 이전 IMAGE_DOS_Header와 MS-DOS_Stub 수정 후 크기는 변하지 않았습니다. 다음으로는 SECTION.data을 확인해보겠습니다. 그런데 PE구조를 다시 보니 리소스 부분을 먼저 삭제를 해야 될꺼같습니다. 1. SECTION.rsrc 삭제하기 peview를 통해 해당 SECTION.rsrc 영역을 확인 후 Hxd에서 리소스 부분을 삭제를 했습니다. 삭제 후 확인 해보면 SECTION.rsrc 영역이 삭제 된걸 확인 할 수 있습니다. 파일을 실행 하게 되면 실행이 되지 않습니다. 실행이 되도록 만들어야 되겠지요. 이제 리소스를 참조한 부분을 찾아 수정..
[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE)PE 파일의 전체 구조를 보며, 불필요한 부분을 삭제하고 변경을 통해 크기를 줄이는 목적으로 작성하겠습니다. 파일 최초 크기8,704 바이트 이며, 실행 시 Hello World가 출력됩니다. 파일 전체 구조 1. IMAGE_DOS_HEADER와 MS-DOS_Stub 1.1 IMAGE_DOS_HEADERIMAGE_DOS_Header의 구조체를 확인 했을 때 구조체 중 "e_magic" 필드와 "e_lfanew" 필드가 가장 중요하다고 합니다. e_magic : DOS Signature [4D5A → MZ]e_lfanew : NT Header offset [E0000000 ..
[Reversing] IMAGE_SECTION_HEADER 1. IMAGE_SECTION_HEADER IMAGE_SECTION_HEADER 입니다.IMAGE_SECTION_HEADER는 각각 섹션에 대한 정보가 저장되어 있습니다.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 PointerToLinenumbers; WORD NumberOfR..
- Total
- Today