공부해요/리버싱_핵심원리

17. 실행 파일에서 .reloc 섹션 제거하기

yenas0 2024. 10. 9. 03:23
반응형

Reloc 섹션 설명

  • Base Relocation Table은 PE 파일에서 하드코딩된 주소의 위치를 알려주는 정보로, 실행 파일(EXE)에서는 큰 영향을 주지 않음. 따라서 reloc 섹션을 제거해도 EXE는 정상적으로 실행될 수 있음
  • .reloc 섹션은 보통 VC++에서 생성된 PE 파일의 마지막에 위치하며, 이 섹션을 제거하면 파일 크기가 약간 줄어듦
  • PEViewHex editor를 사용해 쉽게 제거 가능

 

 

 

Reloc 섹션 제거 작업 단계

  1. .reloc 섹션 헤더 정리
    • .reloc 섹션 헤더의 파일 오프셋을 찾아서, Hex editor를 사용해 해당 부분을 0으로 덮어씌움
  2. .reloc 섹션 제거
    • .reloc 섹션의 시작 옵셋을 찾아, 해당 부분부터 파일 끝까지 삭제
    • 이 단계에서 물리적으로 섹션을 제거할 수 있지만, 다른 PE 헤더 정보가 수정되지 않으면 파일이 정상적으로 실행되지 않음
  3. IMAGE_FILE_HEADER 수정
    • Number of Sections 값을 1 감소시킴. (.reloc 섹션을 제거했으므로 섹션 개수가 줄어듦.)
  4. 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