HELLO_HELL?

블로그 이미지

준P

pe) reloc 섹션 제거

Reversing/Windows PE 2014. 9. 17. 23:43

windows pe 중 실행파일인 exe 에서 reloc섹션은 필요 없는 섹션중 하나 입니다.


reloc은 dll이나 sys 파일에서는 필수지만 exe에서는 필요가 없습니다.


실제로 제거를 해도 정상적으로 실행이 됨니다.


그럼 이제 이 섹션을 제거 해봅시다.


섹션을 제거 할려면 일단 섹션을 물리적으로 제거를 하고 섹션의 해더에서 섹션의 주소를 null로 수정하고 섹션의 수가 변경 되었으니 number of section 값을 줄여 줘야합니다.


그리고 메모리에서 크기가 줄어들었으니 줄여 주면 좋겠져 


reloc 섹션을 제거하기위해서는 총 4가지의 작업이 필요합니다.


reloc섹션 제거를 하신후 reloc 섹션의 해더를 정리 하고 IMAGE_FILE_HEADER의 number of section 값을 변경한후에 IMAGE_OPTIONAL_HEADER의 size of image 값을 수정하시면 됨니다.


첫번쨰로 reloc섹션을 물리적으로 제거를 해봅시다.



reloc 섹션의 raw 는 7400입니다. 헥스 에디터로 7400부터 끝까지 null로 하시면 됨니다.


하지만  null로 수정하기에는 힘이듬니다. 따라서 선택 채우기를 사용하여 제거 합니다.


선택채우기는 선택된 (드래그된) 값들을 특정 값으로 변경하는것 입니다.



7400부터 끝까지 드래그 하신뒤에 오른쪽클릭으로 선택 채우기를 클릭합니다.



00가 null이나 00으로 선택후에 수락을 누루시면 됨니다.


reloc 섹션이 00로 바뀌었습니다.


이제 reloc 섹션 해더를 수정해야합니다.




pointer to raw data는 reloc섹션의 주소입니다.


이주소값을 null로 하시면 됨니다.




자 이제 섹션이 제거 되었으니 섹션의 수가 줄어 들었다고 알려줘야져 


IMAGE_FILE_HEADER의 number of section을 1 감소 하시면 됨니다.



number of section의 주소는 f6 입니다.


헥스 에디터로 07 이므로 06으로 변경 하시면 됨니다.




자 이제 마지맏 메모리 공간을 줄이는 일만 남았습니다.


전체 메모리 공간은 reloc 섹션이 제거되면서 줄어들었습니다. 


그런데 남은 메모리 공간을 다른곳에 쓰면 좋을거같아서 안줄이시면 안됨니다.


메모리공간을 줄여 주지 않으면 reloc 섹션을 제거하면서 줄어든 크기가 변경되어 pe파일에 명시된 크기와 실제 파일의 크기가 맞지않아 에러가 뜸니다.


자 이제 메모리공간을 줄여 봅시다.


메모리 크기는 IMAGE_OPTIONAL_HEADER의 size of image에 명시되어 있습니다.




중요한것은 얼마큼 줄여야 정상적으로 실행이 될지 인데요


섹션의 크기는 section alignment에 정의 되어 있습니다.



1000이 네요 1000을 size of image에서 빼시면 됨니다.


헥스 에디터에서 raw가 140이므로 


140에가서 0001c000을 0001b000으로 변경하시면 됨니다.




변경이 완료 되었으면 실행해 보시면 정상적으로 실행이 됨니다.




reloc 섹션이 제거가 된것을 보실수 있습니다.



저작자표시 비영리 변경금지 (새창열림)

'Reversing > Windows PE' 카테고리의 다른 글

windows pe) EAT  (0) 2014.08.06
windows pe) IAT  (0) 2014.07.25
windows pe) null패딩이 진짜 null패딩인지 확인하기  (0) 2014.07.23
windows pe) RVA to RAW(file offset)  (0) 2014.07.15
windows pe)NT_HEADER 하  (0) 2014.07.11
Posted by 준P
블로그 이미지

by 준P

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/05   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

카테고리

HELLO? (157)
스터디 (6)
Windows 구조와 원리 OS를 관통하는 프로그.. (6)
Development (44)
Android (5)
Assembly (4)
C/C++ (11)
C# (0)
HTML (1)
JAVA (2)
JSP (3)
JS Script (2)
Linux Shell Script (2)
Open GL (1)
PHP (0)
Python (1)
QT library (3)
SQL (1)
Swift (1)
MongoDB (0)
Express JS (1)
Angular JS (1)
Node JS (1)
SpongePoweredForgePluginDev.. (2)
Unity3d (1)
Docker (0)
Linux (22)
Linux Kernel Study (1)
Network (9)
WireShark (1)
Network Theory (6)
Hack the packet 2013 (2)
Reversing (50)
Windows PE (10)
Windows Reversing (1)
Linux PE (0)
Linux Reversing (0)
Android Reversing (2)
Reversing Tools (8)
CodeEngn (25)
Reversing.kr (2)
abex's (2)
Sites (3)
System (12)
FTZ (9)
Buffer Over Flow (3)
GDGkr (1)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
준P's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

HELLO_HELL?

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • HELLO? (157)
    • 스터디 (6)
      • Windows 구조와 원리 OS를 관통하는 프로그.. (6)
    • Development (44)
      • Android (5)
      • Assembly (4)
      • C/C++ (11)
      • C# (0)
      • HTML (1)
      • JAVA (2)
      • JSP (3)
      • JS Script (2)
      • Linux Shell Script (2)
      • Open GL (1)
      • PHP (0)
      • Python (1)
      • QT library (3)
      • SQL (1)
      • Swift (1)
      • MongoDB (0)
      • Express JS (1)
      • Angular JS (1)
      • Node JS (1)
      • SpongePoweredForgePluginDev.. (2)
      • Unity3d (1)
    • Docker (0)
    • Linux (22)
    • Linux Kernel Study (1)
    • Network (9)
      • WireShark (1)
      • Network Theory (6)
      • Hack the packet 2013 (2)
    • Reversing (50)
      • Windows PE (10)
      • Windows Reversing (1)
      • Linux PE (0)
      • Linux Reversing (0)
      • Android Reversing (2)
      • Reversing Tools (8)
      • CodeEngn (25)
      • Reversing.kr (2)
      • abex's (2)
    • Sites (3)
    • System (12)
      • FTZ (9)
      • Buffer Over Flow (3)
    • GDGkr (1)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바