본문 바로가기

High Level Technique/Reversing

.reloc section 제거

앞서 PE Relocation에 대해서 알아봤습니다. 해당 주소가 사용 중이라면 다른 임의의 주소로 이동한다는 개념이였습니다.


이러한 정보를 관리하는 곳이 reloc Section 이였다는 것도 말이죠.



하지만 reloc Section이 없어도 프로그램은 실행됩니다. 단지 재배치를 위한 것이기 때문이죠.

ASLR 기능이 추가 되었다고 했는데, 이 기능은 보안상으로도 매우 중요한 역할을 합니다.







reloc Section Header 정리



PEView에서 reloc Section의 File Offset은 280 입니다. 해당 주소 부터 모두 0으로 채워 주도록 합니다.










reloc Section 제거


PEView에서 Pointer to Raw Data 값이 31600임을 알 수 있습니다. 해당 주소로 이동해서 해당 영역을 모두 0으로 채워줍니다. 31600부터 끝까지 0으로 채워주면 됩니다.












IMAGE_FILE_HEADER 수정


Section의 개수가 변경 되므로 IMAGE_FILE_HEADER의 NumberOfSections 값을 바꿔 줍니다.



PEView로 확인한 결과 Number of Sections의 값은 현재 5입니다. reloc Section을 제거하기 때문에 Section의 수가 1 감소하게 되므로 4로 변경해줘야 합니다.















IMAGE_OPTIONAL_HEADER 수정


reloc Section이 제거 되면서 크기가 줄어들게 되었죠. 마찬가지로 IMAGE_OPTIONAL_HEADER의 SizeOfImage 값을 수정해줘야 합니다.





Section Alignment의 값은 1000 이고, Size of Image 값은 38000 입니다.


reloc Section의 VirtualSize가 15DC 이므로 1000 배수로 확장되어야 하므로 2000 을 빼주어야 합니다.


Size of Image - Section Alignment = 38000 - 2000 = 37000이 됩니다.



헥스 에디터로 이동하여 Size of Image 값을 변경합니다.





'High Level Technique > Reversing' 카테고리의 다른 글

DLL Injection  (0) 2016.07.06
Windows Massage Hooking  (0) 2015.12.29
PE 재배치 (PE Relocation)  (0) 2015.12.21
EAT (Export Address Table)  (0) 2015.12.21
IAT (Import Address Table)  (0) 2015.12.18