정상적인 실행파일에 섹션을 하나 추가 하기 위한 과정은 아래와 같다.
1. NumberOfSections의 값을 변경(기존 5에서 6으로)
2. SizeOfImage 값을 변경(기존 11000 에서 12000으로)
3. 추가할 섹션의 헤더정보 추가
4. 섹션 Body 추가
(1. NumberOfSections 변경)
(2. SizeOfImage 변경)
(3. 섹션 헤더 정보 추가)
여기서 중요한 부분은 다음이다.
RVA
- 다른 섹션 헤더들의 RVA값을 보면 차례대로 이어지는 것을 확인 할 수 있다.
- 만약 RVA값을 이어지게 주지않으면 실행되지 않는다.
Size Of Raw Data
- Pointer To Raw Data 값에서 Size Of Raw Data의 크기 만큼의 파일 공간이 존재 해야 실행된다.
Pointer To Raw Data
- 이값은 다른섹션의 Body 부분과 곂쳐도 실행이 된다.
- ex).reloc의 섹션 부분이 "C000~파일끝"이지만 .ABC의 PointerToRawData 값을 "C800"으로 설정해도 실행이 된다.
- 존재하지 않는 옵셋으로 설정할 경우 실행 되지 않는다.
(4. 섹션 바디 내용 추가)
'Reversing(리버싱 핵심 원리) > 개념' 카테고리의 다른 글
Windows 메시지 후킹 // 윈도우 메시지 후킹 (0) | 2019.04.09 |
---|---|
UPack PE 헤더 상세 분석 (0) | 2019.03.25 |
PE 재배치(PE RELOADING) // BASE RELOCATION TABLE (0) | 2019.03.23 |
C언어 #Pragma commnet, #Pragma data_seg 란 (0) | 2018.09.04 |
EP(Entry Point)란 (0) | 2018.09.04 |