티스토리 뷰
[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 영역이 삭제 된걸 확인 할 수 있습니다.
파일을 실행 하게 되면 실행이 되지 않습니다.
실행이 되도록 만들어야 되겠지요.
이제 리소스를 참조한 부분을 찾아 수정을 해야됩니다.
1.1 IMAGE_FILE_HEADER
IMAGE_FILE_HEADER의 Number of Sections를 수정해줍니다.
이전 구조를 확인 해보시면 총 4개의 섹션이었지만 저희는 방금 위에서 리소스섹션을 삭제를 했으니 기존 4개에서 3개로 변경을 해야됩니다.
해당 영역을 찾아서 변경해 주었습니다.
1.2 IMAGE_OPTIONAL_HEADER
1.2.1 Size of Image
IMAGE_OPTIONAL_HEADER에서 Size of Image를 확인합니다.
기존 RVA값이 IMAGE_DOS_HEADER부터 IMAGE_SECTION_HEADER .data까지 1000크기와
각각 섹션 당 1000의 크기로 .text, .rdata, .data, .rsrc 총 5000의 크기입니다.
위에서 .rsrc 삭제해서 RVA 크기가 1000 감소했으니 5000에서 4000으로 변경해줍니다.
해당 영역을 찾아서 변경해 주었습니다.
1.2.2 RESOURCE Table
리소스 데이블에 대한 참조 영역을 0으로 변경을 해줍니다.
해당 영역부분을 0으로 변경해 주었습니다.
.rsrc 삭제 후 파일 크기
기존 8,704 바이트 이며, 실행 시 Hello World가 출력이 되었습니다.
.rsrc 삭제 후 현재 8,192 바이트 이며, 실행도 됩니다.
계속해서 줄여 나가려고 하였으나, 직접 제작해 보는 것이 더 도움이 되는 것 같아 다음 게시물에서는 만들어보기로 했습니다.
'Reversing > ETC' 카테고리의 다른 글
[Reversing] Printf()함수 스택프레임(Stack Frame) (0) | 2019.06.30 |
---|---|
[Reversing] 스택프레임(Stack Frame) (0) | 2019.06.28 |
[Reversing] 가능한 가장 작은 PE 실행 파일 만들기(Tiny PE) ① (0) | 2019.04.02 |
[Reversing] IMAGE_SECTION_HEADER (0) | 2019.02.12 |
[Reversing] PE 포맷(Portable Executable) (0) | 2019.02.12 |
- Total
- Today