강좌 / 팁

소프트웨어 MPRESS 압축풀기-2

2021.09.28 22:14

sunshine 조회:1402 추천:4

출처: https://forum.tuts4you.com/topic/34146-mpress-v219-x32x64-for-newbies/

x64dbg 다운로드: https://x64dbg.com/#start

참고: https://www.goggleheadedhacker.com/blog/post/6

 

x64dbg 디버거를 이용해서 MPRESS 압축 풀기입니다. 

압축을 해제하는 방법은 "ESP(32 비트) / RSP(64 비트)" 로 하드웨어 중단점을 설정 후,

OEP(Original Entry Point) 를 찾아서 Scylla(내장 덤프 도구) 로 덤프합니다.

그리고 이 번 [MPRESS 압축풀기-2] 가 숙달되면 [UPX 압축 풀기] 도 대동소이해서 쉽습니다.

 

테스트 파일1(원본): MPress2.19x32x64(Unpacking).7z

테스트 파일1(덤프): UnPackMe32_dump_SCY.7z

테스트 파일2(원본): PECMD.7z -> 추가 했습니다.

테스트 파일2(덤프): 없으니 스스로 해보세요.

 

1. x32dbg 및 x64dbg 공통

 

- [F7 키]=[(2) 번 버튼] 대신에 [우측 옆에 있는 버튼]=[F8 키] 를 이용해도 됩니다. 

- [버튼 및 key] 를 클릭했을 때 이동이 안되면 동일한 [버튼 및 key] 다시 한번 클릭하면 잘 됩니다.

btn.png

 

- 디버거 실행은 release 폴더의 x96dbg.exe 를 클릭하시면 x32dbg / x64dbg 선택 창이 나옵니다.

- 압축을 푼 후 리소스 수정이 불가 한 것은 Resource Tuner 로 로드한 다음에,

Resource Tuner 로 수정하든지 아니면 저장한 다음에 다른 리소스 편집기를 사용하시면 됩니다.

 

///////////////////////////////////////////////////////////////////////////////////////////

2. MPRESS 로 압축된 32 비트 파일 압축 풀기

 

2-1. DIE 로 UnPackMe32.exe 압축 여부 확인하기

s32-1.png

 

2-2. x96dbg 실행시 대상 파일이 32 비트이면 x32dbg 를 선택합니다. 

s32-2.png

 

2-3. UnPackMe32.exe 를 로드하면 나타나는 첫 화면입니다.

s32-3.png

 

2-4. 위에서 F9 을 클릭해서 엔트리 포인트가 있는 pushad 까지 와야 합니다.

pushad 우측에 적색으로 된 [EntryPoint] 가 있으면 정상입니다. 

s32-4.png

 

2-5. 위에서 F7 을 클릭해서 call 로 진입합니다. 

 

여기서 [하드웨어 중단점] 설정을 명령어로 할려면 맨 아래 명령 창에 [bphws esp,rw] 를 입력하고 [엔터] 하시면 됩니다.

그리고 2-6, 2-7, 2-8 은 건너 뛰고 2-9 로 가세요.

s32-5.png

 

2-6. 우측 [FPU 숨기기] 창에서 마우스로 ESP 를 우클릭한 후 [덤프에서 따라가기] 를 클릭합니다.

- 참고로 32 비트이면 ESP 이지만 64 비트는 RSP 입니다.

s32-6.png

 

2-7. 좌하단 [덤프1] 창을 보면 HEX 밑에 [12] 즉 1 바이트만 선택되어 있습니다.

s32-7.png

 

2-8. "덤프1" 창에서 하드웨어 중단점 설정하기

좌하단 [덤프1] 창의 HEX 밑 [12] 부터 4 바이트를 마우스로 선택합니다.

그 4 바이트에서 마우스로 우클릭한 후 [중단점(B) - 하드웨어, 액세스(A) - Dword] 를 선택합니다.

참고: 마우스로 우클릭한 후 [하드웨어 제거] 가 있으면 클릭하고, 다시 마우스로 우클릭을 하시면 됩니다.

s32-8.png

 

2-9. 위에서 [하드웨어 중단점] 설정한 후 F9 을 클릭하면 jmp 에 도달합니다.

참고로 [jmp unpackme32.401110] 에서 [401110] 이 OEP 주소입니다.

s32-9.png

 

2-10. 위에서 F7 을 클릭하면 push 에 도달합니다. 여기가 OEP 입니다.

주의: 여기서 키(key) 로 더 이상 진행하시면 안됩니다.

s32-10.png

 

2-11. 덤프하기

위의 1 번에서 [3 번 아이콘] 을 클릭해서 Scylla 창이 뜨면, (1)-(2)-(3)-(4) 순으로 진행 하시면 됩니다.

 

(1) 번 [IAT Autosearch] 를 실행한다.

[예] 를 선택하면 [고급 IAT 검색] 을 사용하고, [아니오] 를 선택하면 [고급 IAT 검색] 을 미 사용하는 겁니다.

둘 다 사용해 보시고 기본값 설정은 메뉴의 [Misc - Options - Use advanced IAT serach] 에서 하시면 됩니다.

 

(2) 번 [Get Impots] 를 실행한다.

중요: Impots 칸에 적색 X 자 표시가 있는 것은 우클릭 후,

[Delete tree node] 를 클릭해서 전부 제거한 다음에 (3) 번 Dump 를 시행해야 dll 에러가 안 나옵니다.

 

(3) 번 [Dump] 를 실행한다.

UnPackMe32_dump.exe 파일이 생성됩니다.

 

(4) 번 [Fix dump] 를 실행한다.

파일명 끝에 [_dump] 가 붙은 UnPackMe32_dump.exe 를 선택해야 됩니다.

그러면 UnPackMe32_dump.exe 에 [_SCY] 가 붙은 UnPackMe32_dump_SCY.exe 파일이 생성됩니다.

이 파일이 압축이 풀린 최종 파일입니다.

 

- 덤프한 다음에 안될 경우

메뉴 "다시 시작" 아이콘을 클릭하시고 다시 실행보세요.

디버거를 종료하고 처음부터 다시 시작해보세요.   

덤프 전에 수정할 것이 있거나 또는 덤프 후에 수정할 것이 있을 수도 있습니다.

그래도 안 되면 다른 고수님께 부탁하세요.

 

s32-11.png

 

2-12. 언팩된 UnPackMe32_dump_SCY.exe 를 실행한 모습입니다.

s32-12.png

 

2-13. UnPackMe32_dump_SCY.exe 를 DIE 로 살펴본 것입니다.

s32-13.png

 

///////////////////////////////////////////////////////////////////////////////////////////

3. MPRESS 로 압축된 64 비트 파일 압축 풀기

 

3-1. DIE 로 UnPackMe64.exe 압축 여부 확인하기

s64-1.png

 

3-2. x96dbg 실행시 대상 파일이 64 비트이면 x64dbg 를 선택합니다. 

s64-2.png

 

3-3. UnPackMe64.exe 를 로드하면 나타나는 첫 화면입니다.

s64-3.png

 

3-4. 위에서 F9 을 클릭해서 엔트리 포인트가 있는 push 까지 와야 합니다. 

push 우측에 적색으로 된 [EntryPoint] 가 있으면 정상입니다. 

s64-4.png

 

3-5. 위에서 F7 을 클릭해서 lea 로 진입합니다. 

 

여기서 [하드웨어 중단점] 설정을 명령어로 할려면 맨 아래 명령 창에 [bphws rsp,rw] 를 입력하고 [엔터] 하시면 됩니다.

그리고 3-6, 3-7, 3-8 은 건너 뛰고 3-9 로 가세요.

s64-5.png

 

3-6. 우측 [FPU 숨기기] 창에서 마우스로 RSP 를 우클릭한 후 [덤프에서 따라가기] 를 클릭합니다.

- 참고로 32 비트이면 ESP 이지만 64 비트는 RSP 입니다.

s64-6.png

 

3-7. 좌하단 [덤프1] 창을 보면 HEX 밑에 [00] 즉 1 바이트만 선택되어 있습니다.

s64-7.png

 

3-8. [덤프1] 창에서 하드웨어 중단점 설정하기

좌하단 [덤프1] 창의 HEX 밑 [00] 부터 4 바이트를 마우스로 선택합니다.

그 4 바이트에서 마우스로 우클릭한 후 [중단점(B) - 하드웨어, 액세스(A) - Dword] 를 선택합니다.

참고: 마우스로 우클릭한 후 [하드웨어 제거] 가 있으면 클릭하고, 다시 마우스로 우클릭을 하시면 됩니다.

s64-8.png

 

3-9. 위에서 [하드웨어 중단점] 설정한 후 F9 을 클릭하면 pop 에 도달합니다.

s64-9.png

 

3-9-1. 위에서 F7 을 클릭하면 jmp 에 도달합니다. 

참고로 [jmp unpackme64.1400011EC] 에서 [1400011EC] 이 OEP 주소입니다.

s64-9-1.png

 

3-10. 위에서 F7 을 클릭하면 sub 에 도달합니다. 여기가 OEP 입니다.

주의: 여기서 키(key) 로 더 이상 진행하시면 안됩니다.

s64-10.png

 

3-11. 덤프하기

위의 1 번에서 [3 번 아이콘] 을 클릭해서 Scylla 창이 뜨면, (1)-(2)-(3)-(4) 순으로 진행 하시면 됩니다.

 

(1) 번 [IAT Autosearch] 를 실행한다.

[예] 를 선택하면 [고급 IAT 검색] 을 사용하고, [아니오] 를 선택하면 [고급 IAT 검색] 을 미 사용하는 겁니다.

둘 다 사용해 보시고 기본값 설정은 메뉴의 [Misc - Options - Use advanced IAT serach] 에서 하시면 됩니다.

 

(2) 번 [Get Impots] 를 실행한다.

중요: Impots 칸에 적색 X 자 표시가 있는 것은 우클릭 후,

"Delete tree node" 를 클릭해서 전부 제거한 다음에 (3) 번 Dump 를 시행해야 dll 에러가 안 나옵니다.

 

(3) 번 [Dump] 를 실행한다.

UnPackMe64_dump.exe 파일이 생성됩니다.

 

(4) 번 [Fix dump] 를 실행한다.

파일명 끝에 [_dump] 가 붙은 UnPackMe64_dump.exe 를 선택해야 됩니다.

그러면 UnPackMe64_dump.exe 에 [_SCY] 가 붙은 UnPackMe64_dump_SCY.exe 파일이 생성됩니다.

이 파일이 압축이 풀린 최종 파일입니다.

 

- 덤프한 다음에 안될 경우

메뉴 "다시 시작" 아이콘을 클릭하시고 다시 실행보세요.

디버거를 종료하고 처음부터 다시 시작해보세요.     

덤프 전에 수정할 것이 있거나 또는 덤프 후에 수정할 것이 있을 수도 있습니다.

그래도 안 되면 다른 고수님께 부탁하세요.

s64-11.png

 

3-12. 언팩된 UnPackMe64_dump_SCY.exe 를 실행한 모습입니다.

s64-12.png

 

3-13. UnPackMe64_dump_SCY.exe 를 DIE 로 살펴본 것입니다.

32 비트에서는 안 보이던 compiler 가 나타났네요.

s64-13.png

 END ///////////////////////////////////////////////////////////////////////////////////////////

 

 

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
4120 소프트웨어| AIMP에서 라디오 스트림(방송)을 녹음하는 법 [1] VᴇɴᴜꜱGɪ 865 11 03-03
4119 모 바 일| 카톡에서 다국어를 쉽게 입력하는 방법 [1] 무림거사 1180 3 03-01
4118 윈 도 우| 탐색기 내장명령어 우클릭에 추가하기 [12] 지후빠 2000 23 02-27
4117 소프트웨어| FastCopy 토탈커맨더 연동 [14] 슈머슈마 1520 6 02-26
4116 윈 도 우| 폴더 및 파일 숨기기 컨텍스트 메뉴 ( 수정 ) [19] 슈머슈마 1445 9 02-26
4115 윈 도 우| PE에서 받는 파일을 안전 장소에 저장하기 [6] PC_Clinic 1504 14 02-24
4114 윈 도 우| Windows 11에서 시스템 요구 사항이 충족되지 않음 미리 알... [1] VᴇɴᴜꜱGɪ 1647 11 02-24
4113 윈 도 우| 파일 및 폴더 경로 복사 컨텍스트 메뉴 [3] 슈머슈마 865 8 02-23
4112 윈 도 우| 인터넷에 연결하지 않고도 Windows 11 장치를 설정할 수 있... VᴇɴᴜꜱGɪ 1430 8 02-23
4111 윈 도 우| 이 앱이 디바이스를 변경할 수 있도록 허용하시겠어요? [4] 하늘은높고 1365 10 02-22
4110 윈 도 우| (수정) Extd 한글 설명서 [명령_문법 부분에 대하여 자세한... [4] 슈머슈마 846 6 02-21
4109 윈 도 우| [자작] Open the Folder - 우클릭 [10] 배워요 1614 14 02-20
4108 윈 도 우| 배치파일로 원하는 날짜 포멧 조합하기 [6] 지후빠 1553 11 02-17
4107 윈 도 우| PE에서 드라이버가 설치 되기위해 필요한 파일 [10] @카리스마 1659 8 02-17
4106 윈 도 우| 배치파일로 윈도 설정과 관계없이 일정한 날짜 얻기 [6] 히이이잌 890 12 02-16
4105 기 타| RSImageX 기본 파일 구성 [19] suk 2641 33 02-14
4104 윈 도 우| WIM 우클릭 부팅 관련 메뉴 2부 [11] 지후빠 2077 18 02-13
4103 윈 도 우| PE 네트워크 설정하는 방법 2편입니다. [4] PC_Clinic 1117 11 02-12
4102 윈 도 우| WIM(PE) 1회성 부팅; 우클릭 보내기 메뉴에 추가 [16] 지후빠 2650 27 02-11
4101 윈 도 우| AdGuard 사용시 다나와 메뉴 폰트 깨지는 현상 [3] damoa 626 2 02-11
XE1.11.6 Layout1.4.8