소프트웨어 PE 섹션 수정하기
2021.07.11 19:59
- winpe 파일 수정이 아니고 exe, dll 등의 실행 파일 섹션을 수정하는 것입니다.
- 잘 몰라서 나중에라도 찾기 쉽도록 하기 위해서 기록합니다.
-------------------------------------------------------------------------
◆ 0. PE 섹션 수정하기 참고사항
1. 출처;
https://nheart2.tistory.com/89?category=685230
https://osb330.tistory.com/45
https://www.52pojie.cn/thread-1391994-1-1.html
2. 16 진수 표시: 0x2000 -> 2000h
3. 헥사값을 리틀 에디언 방식으로 읽기 예;
00000086: 03 00 -> 00 03 -> 3h (Number Of Sections)
000000B8: 00 20 00 00 -> 00 00 20 00 -> 2000h (Section Alignment)
4. 테스트용 파일 및 도구: Athena-A(cn).exe, Stud_PE, WinHex, HWorkshop
5. VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
* max (VirtualSize, RawSize) : 두 값 중 큰 값을 선택한다.
* 계산기로 하는 것이 아니라 눈으로 보고 계산하면 됩니다.
* 1h/10h/100h 자리에 숫자가 있으면 반올림해서 1000h 로 만들고,
1h/10h/100h 자리는 000h 로 변경한다.
예1) VirtualSize=Ch, RawSize=200h, SectionAlignment=1000h 인 경우
* 큰 값 200h=0000h+200h, 200h->1000h, 0000h+1000h=1000h(정렬값)
예2) VirtualSize=Ch, RawSize=200h, SectionAlignment=2000h 인 경우
* 큰 값 200h=0000h+200h, 200h->1000h, 0000h+1000h=1000h
* 1000h 의 1 은 홀수이므로 짝수로 만들기 위해서 추가로 +1000h 한다.
* 1000h+1000h(추가)=2000h(정렬값)
예3) VirtualSize=C97A8h, RawSize=C9800h, SectionAlignment=1000h 인 경우
* 큰 값 C9800h=C9000h+800h, 800h->1000h, C9000h+1000h=CA000h(정렬값)
예4) VirtualSize=C97A8h, RawSize=C9800h, SectionAlignment=2000h 인 경우
* 큰 값 C9800h=C9000h+800h, 800h->1000h, C9000h+1000h=CA000h(정렬값)
* CA000h 의 A(10) 는 짝수이므로 A 그대로 사용한다.
-------------------------------------------------------------------------
◆ 1. 마지막에 .test 섹션 추가하기
VirtualSize/RawSize 의 기본값을 1000h 로 설정한 경우입니다.
1. .test 섹션 추가하기
Stud_PE 로 파일을 연다.
"Sections" 클릭.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000C9A00 40000040
03 .reloc 0000000C 000E0000 00000200 000DBE00 42000040
============================================================================
청색 빈 블록에 마우스로 우클릭, "New Section" 클릭.
"Add New Section v2.0" 창이 나타나면 데이타 입력.
============================================================================
Section Name: .test -> 변경하지 않고 그대로 사용.
RawSize : 00000000h -> 00001000h(기본값) 로 수정.
VirtualSize : 00000000h -> 00001000h(기본값) 로 수정.
* VirtualSize 는 SectionsAlignment 과 연동되어 자동으로 다시 수정 됨.
Characteristics: E0000060h -> 기본값으로 수정 불가.
fill section with NULL bytes: 체크 -> 창 제목이 아래처럼 바뀜.
* "Add New Section v2.0" -> "Add New Section -> filling with NULLz"
============================================================================
"Add" 클릭 후, "No space to add new header" 이면 "확인" 클릭.
-> "Headers" 클릭, "SizeOfHeaders [+]" 클릭, "예(Y)" 클릭, "확인" 클릭.
-> "1" 로 이동해서 설정을 다시한다.
"Add" 클릭 후, "Section added successfully" 이면 "확인" 클릭, "2" 로 이동.
2. "Characteristics flags" 수정하기: 수정을 안하면 실행 불가
.test 섹션에서 우클릭, "Edit Header" 클릭.
"Characteristics Flags" 에서,
============================================================================
INITIALIZED_DATA: 체크.
MEM_READ: 체크.
나머지 옵션: 언체크.
============================================================================
Save" 클릭, "Close" 클릭.
그러면 아래처럼 <.test 섹션이 추가된 섹션표> 가 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000400 60000020
02 .rsrc 00012314 000CC000 00012400 000C9C00 40000040
03 .reloc 00000200 000E0000 00000200 000DC000 42000040
04 .test 00002000 000E2000 00001000 000DC200 40000040
============================================================================
RawOffset 값이 수정된 이유(위의 RawOffset 녹색값) ;
SizeOfHeaders 가 작아서 200h 를 추가하니까 그 뒤 쪽에 있는,
각 섹션의 주소(RawOffset) 가 자동으로 +200h 된 것입니다.
3. 최종 테스트
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인하고 Stud_PE 를 종료한다.
* 파일 용량은 SizeOfHeaders 가 200h 커지면서 5KB 쯤 늘어납니다.
-------------------------------------------------------------------------
◆ 2. 마지막 .test 섹션 삭제하기
Stud_PE 의 자체 섹션 삭제 "Delete Section" 를 이용하면 에러가 납니다.
1. 섹션 정보 확인하기
Stud_PE 로 파일을 연다.
"Headers" 클릭.
Size Of Image : 000E4000h=E4000h 확인.
Nunber of sections: 0004h 확인.
"Sections" 클릭.
.test 섹션 정보 확인.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000400 60000020
02 .rsrc 00012314 000CC000 00012400 000C9C00 40000040
03 .reloc 00000200 000E0000 00000200 000DC000 42000040
04 .test 00002000 000E2000 00001000 000DC200 40000040
============================================================================
2. .test 섹션 헤더를 00h 으로 수정하기(삭제하면 안됨)
Hex Editor 로 파일을 연다.
맨 위쪽에서 조금 밑으로 내려오면 우측에 .test 문자가 보인다.
.test 를 포함해서 28h(40 바이트) 가 .test 섹션 헤더이다.
WinHex 로 수정하는 경우;
1F0h 로 이동해서, 1번째 니불에 마우스로 우클릭 후 "Biginning of Block" 클릭.
217h 로 이동해서, 2번째 니불에 마우스로 우클릭 후 "End of Block" 클릭.
"Edit" -> "Fill Block..." -> "Fill with hex values"=(00) -> "OK" 클릭.
저장한다.
HexWorkshop 로 수정하는 경우;
1F0h 로 이동해서, 1F0h ~ 217h 구역을 마우스로 선택.
마우스로 우클릭 -> "채우기" -> "다음 16진수 바이트로 채우기"=(00)
-> "확인(O)" 클릭, 저장한다.
3. .test 섹션의 모든 공간 삭제하기
WinHex 로 삭제하는 경우;
DC200h 로 이동해서 1번째 니불에 마우스로 우클릭 후 "Biginning of Block" 클릭.
맨 끝 바이트로 이동해서 2번째 니불에 마우스로 우클릭 후 "End of Block" 클릭.
DELETE 키로 지우고 저장한다.
WinHex 를 종료한다.
HexWorkshop 로 삭제하는 경우;
DC200h 로 이동해서 마우스로 클릭.
마우스로 휠스크롤를 마지막 줄까지 이동시킨다.
시프트키를 누르고, 마우스로 마지막 줄의 끝 바이트를 클릭.
DELETE 키로 지우고 저장한다.
HexWorkshop 를 종료한다.
4. .test 섹션의 정보 수정하기
VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
.test 의 VirtualSize/RawSize 정렬값;
(max (Ch, 200h) ÷ 2000h)반올림 × 2000h=2000h
SizeOfImage 최종값;
E4000h(SizeOfImage 기존값) - 2000h(정렬값)=E2000h.
* SizeOfImage 값은 SectionAlignment 값(2000h) 의 배수가 되어야 한다.
Stud_PE 에서, "Headers" 클릭.
Size Of Image: 000E4000h -> 000E2000h 로 수정.
Nunber of sections: 0004h -> 0003h 로 수정.
"SAVE to file" 클릭, "확인" 클릭.
Stud_PE 를 종료한다.
Stud_PE 로 다시 파일을 열고 "Sections" 클릭.
그러면 아래처럼 <.test 섹션이 삭제된 섹션표> 가 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000400 60000020
02 .rsrc 00012314 000CC000 00012400 000C9C00 40000040
03 .reloc 00000200 000E0000 00000200 000DC000 42000040
============================================================================
5. 최종 테스트
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인하고 Stud_PE 를 종료한다.
* 원본보다 1KB 늘어난 것은 섹션 추가시 "SizeOfHeaders" 가 늘어난 경우임.
-------------------------------------------------------------------------
◆ 3. 마지막 .reloc 섹션 확장하기
추가 확장값을 1000h 로 설정한 경우입니다.
1. 섹션 정보 확인 및 관련된 값 구하기
Stud_PE 로 파일을 연다.
"Headers" 클릭.
Size Of Image : 000E2000h=E2000h 확인.
Sections Alignment: 00002000h=2000h 확인.
"Sections" 클릭.
.reloc 섹션 정보 확인.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000C9A00 40000040
03 .reloc 0000000C 000E0000 00000200 000DBE00 42000040
============================================================================
VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
.reloc 의 VirtualSize/RawSize 정렬값;
(max (Ch, 200h) ÷ 2000h)반올림 × 2000h=2000h
.reloc 의 VirtualSize/RawSize 최종값;
2000h(정렬값) + 1000h(추가 확장값)=3000h
RawSize "늘려야 할 공간" 최종값;
2000h(정렬값) - 200h(기존값) + 1000h(추가 확장값)=2E00h
SizeOfImage 최종값;
E2000h(기존값) + 1000h(추가 확장값)=E3000h -> 2000h 의 배수가 안됨.
E3000h + 1000h(보정값)=E4000h -> 2000h 의 배수가 됨.
* SizeOfImage 값은 SectionAlignment 값(2000h) 의 배수가 되어야 한다.
* 위의 E3000h 는 2000h 의 배수가 안되므로 1000h(보정값) 를 추가해야 배수가 됨.
2. .reloc 섹션에 "새 공간"(늘려야 할 공간) 추가하기
Hex Editor 로 파일을 연다.
WinHex 로 추가하는 경우;
맨 끝 데이타의 2번째 니블에 대고 마우스로 우클릭 후 00h 값으로,
2E00h(11,776 바이트) 추가 후 저장한다.
WinHex 를 종료한다.
HexWorkshop 로 추가하는 경우;
맨 끝 데이타의 다음 빈 곳에 마우스로 우클릭 후 00h 값으로,
2E00h(11,776 바이트) 를 추가 후 저장한다.
HexWorkshop 를 종료한다.
3. 관련된 정보 수정하기
Stud_PE 에서,
"Headers" 클릭.
Size Of Image: E2000h -> E4000h 로 수정.
"SAVE to file" 클릭, "확인" 클릭.
"Sections" 클릭, .reloc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
VirtualSize: Ch -> 3000h 로 수정.
RawSize : 2000h -> 3000h 로 수정.
"Save" 클릭, "Close" 클릭.
그러면 아래처럼 <.reloc 섹션이 수정된 섹션표> 가 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000C9A00 40000040
03 .reloc 00003000 000E0000 00003000 000DBE00 42000040
============================================================================
4. 최종 테스트
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인하고 Stud_PE 를 종료한다.
* 파일 용량은 12KB 쯤 늘어납니다.
-------------------------------------------------------------------------
◆ 4. 모든 섹션을 하나로 통합하기
어느 섹션의 크기를 증감시키면 그 뒤 쪽의 모든 섹션에서 RawOffset 값을 증감시켜야 됩니다.
섹션 수정은 맨위 부터 순서대로 수정해야 합니다.
1. .text 섹션을 섹션 정렬값으로 수정하기
Stud_PE 로 파일을 연다.
"Headers" 클릭.
Sections Alignment: 00002000h -> 2000h 확인.
"Sections" 클릭.
.text 섹션 정보 확인.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000C97A8 00002000 000C9800 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000C9A00 40000040
03 .reloc 0000000C 000E0000 00000200 000DBE00 42000040
============================================================================
VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
.text 의 VirtualSize/RawSize 정렬값;
(max (C97A8h, C9800h) ÷ 2000h)반올림 × 2000h=CA000h
"늘려야 할 공간" 계산: CA000h(정렬값) - C9800h(RawSize 기존값) = 800h
Hex Editor 로 파일을 열고,
.text 섹션의 시작인 200h 가 아니고 끝인 C9A00h 로 이동한다.
800h(2,048 바이트) 크기로 "00" 데이타를 삽입한 후 저장한다.
Hex Editor 를 종료한다.
"Sections" 클릭.
.text 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.text 섹션의 VirtualSize C97A8h -> CA000h 로 수정한다.
.text 섹션의 RawSize C9800h -> CA000h 로 수정한다.
"Save" 클릭, "Close" 클릭.
.rsrc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.rsrc 섹션의 RawOffset C9A00h -> C9A00h+800h=CA200h 로 수정한다.
"Save" 클릭, "Close" 클릭.
.reloc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.reloc 섹션의 RawOffset DBE00h -> DBE00h+800h=DC600h 로 수정한다.
"Save" 클릭, "Close" 클릭.
그러면 아래처럼,
.text 섹션의 VirtualSize/RawSize 값이 수정 되고,
.rsrc/.reloc 섹션의 RawOffset 값이 수정 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000CA200 40000040
03 .reloc 0000000C 000E0000 00000200 000DC600 42000040
============================================================================
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인한다.
2. .rsrc 섹션을 섹션 정렬값으로 수정하기
"Sections" 클릭.
.rsrc 섹션 정보 확인.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00012314 000CC000 00012400 000CA200 40000040
03 .reloc 0000000C 000E0000 00000200 000DC600 42000040
============================================================================
VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
.rsrc 의 VirtualSize/RawSize 정렬값;
(max (12314h, 12400h) ÷ 2000h)반올림 × 2000h=14000h
"늘려야 할 공간" 계산: 14000h(정렬값) - 12400h(RawSize 기존값) = 1C00h
Hex Editor 로 파일을 열고,
.rsrc 섹션의 시작인 CA200h 가 아니고 끝인 DC600h 로 이동한다.
1C00h(7,168 바이트) 크기로 "00" 데이타를 삽입한 후 저장한다.
Hex Editor 를 종료한다.
"Sections" 클릭.
.rsrc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.rsrc 섹션의 VirtualSize 12314h -> 14000h 로 수정한다.
.rsrc 섹션의 RawSize 12400h -> 14000h 로 수정한다.
"Save" 클릭, "Close" 클릭.
.reloc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.reloc 섹션의 RawOffset DC600h -> DC600h+1C00h=DE200h 로 수정한다.
"Save" 클릭, "Close" 클릭.
그러면 아래처럼,
.rsrc 섹션의 VirtualSize/RawSize 값이 수정 되고,
.reloc 섹션의 RawOffset 값이 수정 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00014000 000CC000 00014000 000CA200 40000040
03 .reloc 0000000C 000E0000 00000200 000DE200 42000040
============================================================================
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인한다.
3. .reloc 섹션을 섹션 정렬값으로 수정하기
"Sections" 클릭.
.reloc 섹션 정보 확인.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00014000 000CC000 00014000 000CA200 40000040
03 .reloc 0000000C 000E0000 00000200 000DE200 42000040
============================================================================
VirtualSize/RawSize 값을 SectionAlignment 값으로 정리하는 공식: 정렬값
(max (VirtualSize, RawSize) ÷ SectionAlignment)반올림 × SectionAlignment.
.reloc 의 VirtualSize/RawSize 정렬값;
(max (Ch, 200h) ÷ 2000h)반올림 × 2000h=2000h
"늘려야 할 공간" 계산: 2000h(정렬값) - 200h(RawSize 기존값) = 1E00h
Hex Editor 로 파일을 열고,
.reloc 섹션의 시작인 DE200h 가 아니고 마우스로 맨 끝으로 이동한다.
1E00h(7,680 바이트) 크기로 "00" 데이타를 삽입한 후 저장한다.
Hex Editor 를 종료한다.
"Sections" 클릭.
.reloc 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.reloc 섹션의 VirtualSize Ch -> 2000h 로 수정한다.
.reloc 섹션의 RawSize 200h -> 2000h 로 수정한다.
"Save" 클릭, "Close" 클릭.
.reloc 섹션은 마지막이므로 수정할 다음 섹션의 RawOffset 값은 없습니다.
그러면 아래처럼,
.reloc 섹션의 VirtualSize/RawSize 값은 수정 되고,
최종적으로 다음의 ".text/.rsrc/.reloc 섹션이 수정된 섹션표" 가 됩니다.
* 녹색은 .text 수정시 변경된 것, 보라색은 .rsrc수정시 변경된 것, 적색은 .reloc 수정시 변경된 것.
* 000DE200 는 .text 에서 수정시 1차로 변경 되었고, .rsrc 에서 수정시 2차로 변경 되었습니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00014000 000CC000 00014000 000CA200 40000040
03 .reloc 00002000 000E0000 00002000 000DE200 42000040
============================================================================
섹션 통합의 1차로 모든 섹션이 정렬되었습니다.
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인한다.
정상적으로 실행되면 복사본을 만들고 다음 "4. 섹션 통합하기" 를 실행한다.
* 파일 용량은 17KB 쯤 늘어납니다.
4. 모든 섹션을 .text 로 통합하기
아래 ".text/.rsrc/.reloc 섹션이 수정된 섹션표" 에서,
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000CA000 00002000 000CA000 00000200 60000020
02 .rsrc 00014000 000CC000 00014000 000CA200 40000040
03 .reloc 00002000 000E0000 00002000 000DE200 42000040
============================================================================
VirtualSize/RawSize 값을 더한다. (같으므로 하나만 더한다.}
윈도우 계산기 "프로그래머_HEX" 를 이용한다.
CA000h + 14000h + 2000h = E0000h
Characteristics 값을 OR 로 계산한다.
윈도우 계산기 "프로그래머_HEX_비트" 를 이용한다.
60000020h OR 40000040h OR 42000040h = 62000060h
"Sections" 클릭.
.text 섹션에서 마우스로 우클릭, "Edit Header" 클릭.
.text 섹션의 VirtualSize CA000h -> E0000h 로 수정한다.
.text 섹션의 RawSize CA000h -> E0000h 로 수정한다.
.text 섹션의 Characteristics 60000020h -> 62000060h 로 수정한다.
"Save" 클릭, "Close" 클릭.
"Headers" 클릭.
Number of sections: 0003 -> 0001 로 수정한다.
"SAVE to file" 클릭.
Stud_PE 를 종료한다.
Stud_PE 로 다시 파일을 연다.
"Sections" 클릭.
그러면 아래처럼,
모든 섹션이 .text 섹션에 통합된 단일 섹션이 됩니다.
============================================================================
No Name VirtualSize VirtualOffset RawSize RawOffset Characteristics
01 .text 000E0000 00002000 000E0000 00000200 62000060
============================================================================
섹션 통합의 2차로 섹션이 완전히 하나로 통합되었습니다.
맨 밑의 Test'it 를 클릭해서 실행 여부를 확인한다.
다음 "5. 섹션 헤더 정리하기" 는 실행 여부와는 무관한 옵션입니다.
5. 섹션 헤더 정리하기
Hex Editor 로 파일을 열고,
맨 위쪽에서 조금 밑으로 내려오면 우측에 .text 문자가 보인다.
.text 를 포함해서 0x28(40 바이트) 가 .test 섹션 헤더이다.
.test 섹션 헤더를 제외한
40 바이트(.rsrc 섹션 헤더) + 40 바이트(.reloc 섹션 헤더) = 80 바이트 를
"00" 값으로 수정하면 됩니다. (삭제하면 안됨)
Hex Editor 를 종료한다.
-------------------------------------------------------------------------
- Stud_PE 를 수정했습니다.
댓글 [15]
-
cungice 2021.07.11 22:02
-
두리안 2021.07.11 22:17
리버싱 관련한 이 많은 내용을.. 정말 고생하셨습니다.
-
왕초보 2021.07.11 22:59
좋은 강좌 감사합니다
항상 웃음이 가득한 일만 있으실 바랍니다
-
지후빠 2021.07.11 23:03
넘 어려워요 ㅠㅠ 수고하셨습니다.~,.~
-
sunshine 2021.07.11 23:41
처음하면 헷갈리고 실수 연발입니다.
천천히 따라하다 보면은 조금씩 이해가 됩니다.
-
와로 2021.07.11 23:54
...........................
-
줄리아니 2021.07.12 00:24
수고하셨습니다
Tpl 파일 조금 업데이트 했습니다 (Pe , Pe32+ 를 통합했습니다 )
--------------------------------------------------------------------
Pe_header tpl winhex에서 "50 45" // PE 에 해당하는 위치에 커서가 있을때만 동작합니다
MZPE_Header 아무 위치에서나 사용하실수 있습니다 -
sunshine 2021.07.12 00:44
감사합니다.
------------------------------------------------------------------
테스트를 해보니 잘 됩니다. 그런데 이상하게 종료시에는 에러가 발생하네요.
-
줄리아니 2021.07.12 15:59
20.0 버전에서는 에러가 발생하지만 19.X , 20.1 , xw_forensics 에서는 에러가 발생하지 않습니다
다른 tpl 파일 적용해도 똑같이 에러가 발생하는것으로 보아 특정 버전에서 발생하는 winhex 오류로 보입니다
-
sunshine 2021.07.12 18:18
테스트 해보니 버전별로 양상이 다르게 나오네요.
감사합니다.
-------------------------------------------------
WinHex.cfg 때문에 그렇네요.
방법1;
잘 되는 WinHex.cfg 로 교체하면 잘 됩니다.
방법2;
WinHex.cfg 를 삭제하고 WinHex.exe 를 실행하면, WinHex.cfg 가 다시 생성됩니다.
여기서 임의로 설정값을 수정한 후 저장하면 잘 됩니다.
-------------------------------------------------
설정값 수정 후 단일 파일로 만들기 예;
Folder for temporary files: C:\Users\사용자명\AppData\Local\Temp -> %Temp% 로 수정.
Folder for images and backup files: C:\Users\사용자명\AppData\Local\Temp -> %Temp% 로 수정.
메뉴: View -> Show -> Case Data(언체크), Data Interpreter(언체크), Info Pane(언체크)
임의의 파일을 로드한 후 테스트한다.
메뉴: Window -> Close(체크)
"Recently Opened.dat" 파일 삭제
단일 파일로 만든다.
-
줄리아니 2021.07.13 20:21
확인 했습니다 잘됩니다 좋은 정보 감사드립니다
-------------------------------------------------
팁: Section 을 이용해서 Overlay 유무와 크기 구하기
실제 파일 크기 - 계산한 파일 크기 = 0 이면 오버레이가 없습니다
실제 파일 크기 - 계산한 파일 크기 > 0 이면 오버레이 데이터가 존재 합니다
실제 파일 크기는 파일 속성에서 크기를 보시면 됩니다 777,124(0xBDBA4) 바이트 입니다
계산한 파일 크기는 마지막 섹션 Raw Address:0x65400 Raw size:0x21400 을 더한 값(0x86800) 입니다
0xBDBA4 - 0x86800 = 0x373A4
Overlay 는 0x86800 부터 시작하고 크기는 0x373A4 입니다
0x86800 는 Offset 값입니다 winhex에서 확인하실수 있습니다
-
별의아이 2021.07.13 08:31
정말 대단하십니다. 노고에 감사드립니다.
-
obs 2021.07.15 06:52
수고하셨습니다.
-
슈머슈마 2021.07.15 11:50
Offset 값 수정하는 그런건가요?
CFF Explorer 하고 비슷한?
Athena-a 중국 코드치환 및 번역 프로그램?
한글이 아니라서 athena-a 써보지 못했던 그론 프로그램
바이러스에 걸려서 그렇기도하고 -
sunshine 2021.07.15 13:57
Stud_PE 에서 그런 기능도 있지만 여기서는 PE 섹션에 대해서만 다룬 것입니다.
Athena-a 는 섹션 수가 적어서 다루기가 쉽습니다.
그래서 하나의 예(샘플)로써 사용한 것 뿐입니다.
수고 많으셨습니다. 감사합니다.