리버싱 엔지니어링/리버싱 핵심 원리
17 실행 파일에서 .reloc 섹션 제거하기
흰싸라기
2022. 3. 27. 15:27
reloc 섹션
- EXE 형식의 PE 파일에서 Base Relocation Table 항목은 실행에 큰 영향을 끼치지 않음
- Relocation 섹션 이름 : '.reloc'
- .reloc 섹션 제거 시 PE 파일 크기가 약간 줄어드는 효과
- .reloc 섹션 제거는 PEView와 Hex editor를 이용해 수동으로 제거 가능
reloc.exe
- .reloc 제거 작업단계
- .reloc 섹션 헤더 정리
- .reloc 섹션 제거
- IMAGE_FILE_HEADER 수정
- IMAGE_OPTIONAL_HEADER 수정
#1단계 : .reloc 섹션 헤더 정리
- .reloc 섹션 헤더는 파일 옵셋 270에서 시작됨
- 이 부분을(270~297) Hex Editor를 이용해 0으로 덮어 씀
- HxD의 'Fill selection...(선택 영역 채우기)' 기능 이용
#2단계 : .reloc 섹션 제거
- 1단계 사진 참고) .reloc 섹션의 시작 옵셋(Pointer to Raw Data)은 C000
- Hex Editor로 C000 옵셋 부터 파일 끝까지 삭제
- HxD의 'Delete(삭제)' 기능 이용
↓PE 헤더 정보를 수정하여 정상 실행되도록 수정
#3단계 : IMAGE_FILE_HEADER 수정
- Number of Sections 현재 값 : 5 -> 섹션이 하나 줄었으므로 4로 수정
#4단계 : IMAGE_OPTIONAL_HEADER 수정
- 섹션 크기만큼 전체 이미지 크기가 줄어듦
- 이미지 크기는 IMAGE_OPTIONAL_HEADER - Size of Image에 명시되어있음
- Size of Image 값 11000
- VirtualSize 값은 E40, Section Alignment에 맞게 확장하면 1000
- Section Alignment : 메모리에서 섹션의 최소 단위 → Section Aligment 값 단위로 확장해야함.
- 따라서, Size of Image 값을 1000만큼 빼야함 → 10000로 수정