ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 17 실행 파일에서 .reloc 섹션 제거하기
    리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 27. 15:27

     reloc 섹션 

    • EXE 형식의 PE 파일에서 Base Relocation Table 항목은 실행에 큰 영향을 끼치지 않음 
      • Relocation 섹션 이름 : '.reloc'
      • .reloc 섹션 제거 시 PE 파일 크기가 약간 줄어드는 효과
    • .reloc 섹션 제거는 PEView와 Hex editor를 이용해 수동으로 제거 가능

     

     reloc.exe 

    • .reloc 제거 작업단계
      1. .reloc 섹션 헤더 정리
      2. .reloc 섹션 제거
      3. IMAGE_FILE_HEADER 수정
      4. IMAGE_OPTIONAL_HEADER 수정

    #1단계 : .reloc 섹션 헤더 정리

    .reloc 섹션 헤더

    • .reloc 섹션 헤더는 파일 옵셋 270에서 시작됨
    • 이 부분을(270~297) Hex Editor를 이용해 0으로 덮어 씀
      • HxD의 'Fill selection...(선택 영역 채우기)' 기능 이용

    .reloc 섹션 헤더 제거

    #2단계 : .reloc 섹션 제거

    • 1단계 사진 참고) .reloc 섹션의 시작 옵셋(Pointer to Raw Data)은 C000
    • Hex Editor로 C000 옵셋 부터 파일 끝까지 삭제 
      •  HxD의 'Delete(삭제)' 기능 이용

     

     

     

    ↓PE 헤더 정보를 수정하여 정상 실행되도록 수정

    #3단계 : IMAGE_FILE_HEADER 수정

    • Number of Sections 현재 값 : 5 -> 섹션이 하나 줄었으므로 4로 수정

    Number of Sections 값 변경

     

    #4단계 : IMAGE_OPTIONAL_HEADER 수정

    • 섹션 크기만큼 전체 이미지 크기가 줄어듦
      • 이미지 크기는 IMAGE_OPTIONAL_HEADER - Size of Image에 명시되어있음 
      • Size of Image 값 11000

    • VirtualSize 값은 E40, Section Alignment에 맞게 확장하면 1000
      • Section Alignment : 메모리에서 섹션의 최소 단위 → Section Aligment 값 단위로 확장해야함. 

    Section Alignment

    • 따라서, Size of Image 값을 1000만큼 빼야함 → 10000로 수정

     

    '리버싱 엔지니어링 > 리버싱 핵심 원리' 카테고리의 다른 글

    19 UPack 디버깅 - OEP 찾기  (0) 2022.03.30
    18. UPack PE 헤더 상세 분석  (0) 2022.03.30
    16 Base Relocation Table  (0) 2022.03.27
    15 UPX 실행 압축된 notepad 디버깅  (0) 2022.03.27
    14 실행 압축  (0) 2022.03.25

    댓글

Designed by Tistory.