반응형
Reloc 섹션 설명
- Base Relocation Table은 PE 파일에서 하드코딩된 주소의 위치를 알려주는 정보로, 실행 파일(EXE)에서는 큰 영향을 주지 않음. 따라서 reloc 섹션을 제거해도 EXE는 정상적으로 실행될 수 있음
- .reloc 섹션은 보통 VC++에서 생성된 PE 파일의 마지막에 위치하며, 이 섹션을 제거하면 파일 크기가 약간 줄어듦
- PEView나 Hex editor를 사용해 쉽게 제거 가능
Reloc 섹션 제거 작업 단계
- .reloc 섹션 헤더 정리
- .reloc 섹션 헤더의 파일 오프셋을 찾아서, Hex editor를 사용해 해당 부분을 0으로 덮어씌움
- .reloc 섹션 제거
- .reloc 섹션의 시작 옵셋을 찾아, 해당 부분부터 파일 끝까지 삭제
- 이 단계에서 물리적으로 섹션을 제거할 수 있지만, 다른 PE 헤더 정보가 수정되지 않으면 파일이 정상적으로 실행되지 않음
- IMAGE_FILE_HEADER 수정
- Number of Sections 값을 1 감소시킴. (.reloc 섹션을 제거했으므로 섹션 개수가 줄어듦.)
- IMAGE_OPTIONAL_HEADER 수정
- .reloc 섹션 제거로 인해 이미지 크기가 줄어들었으므로 SizeOfImage 항목을 수정해야 함
반응형
'공부해요 > 리버싱_핵심원리' 카테고리의 다른 글
19. UPack 디버깅 - OEP 찾기 (0) | 2024.10.16 |
---|---|
18. UPack PE 헤더 상세 분석 (0) | 2024.10.16 |
16. Base Relcoation Table (4) | 2024.10.09 |
15. UPX 실행 압축된 notepad 디버깅 (0) | 2024.10.09 |
14. 실행 압축 (0) | 2024.10.08 |