R136A1
[codeEngn] Basic RCE L06 (수동언패킹) 본문
Unpack 후 Serial 찾기
OEP+Serial이 정답
파일
일단 패킹되어있는 파일인지 체크하기
PEid 또는 ExeinfoPE 또는 DIE(Detect It Easy)
UPX로 패킹되어있음
1. 수동 언패킹 (manual unpacking)
UPX 패킹
PUSHAD 정상적인 실행값을 가진 레지스터를 스택에 백업해놓고 이 레지스터를 이용해 패킹작업을 한 뒤
POPAD하여 정상적인 실행값을 가져와 OEP를 실행시키기 위함
PEviewer
[정상적인 PE파일] 전체적인 PE구조 및 IAT가 쉽게 확인되어 어떤 API 사용하는지 한눈에 보임
[UPX로 패킹 진행] SECTION .text → SECTION UPX0 형식으로 모두 패킹됨
IAT를 살펴봐도 사용되는 API 목록들이 가려져있음
1. Ollydbg의 dump를 이용하기
UPX패킹에서 나타나는 코드 구조
Entry Point에서 PUSHAD
NOP NOP NOP NOP......
아래쪽에서 POPAD와 JMP [프로그램명].00401360 (→OEP) 를 볼 수 있음
DB 00 DB 00 DB 00......
프로그램 실행 시 정상 동작을 위한 언패킹 알고리즘
(PUSHAD로 이전 레지스트리를 스택에 저장(백업)해놓고, 패킹을 푼 후에 POPAD로 레지스터 상태 복구)
그냥 현재 00401360(OEP)로 가봐도 언패킹 알고리즘이 수행되지 않아 암호화되어있음
중단점 JMP나 OEP에 설정한 뒤 프로그램을 실행시키면 언패킹 알고리즘이 수행되어 확인 가능
언패킹해보기
OllyDump.dll 플러그인을 다운받고 경로에 넣고 재시작
실행 후 00403160에서 복호화된 것 확인하고 아무데서나 Dump debugged process
Entry Point에 대한 언급이 없음 - 저 블로그 글 필자는 Entry Point를 1360으로 뒀음.
나는 처음 뜬 그대로 하니까 PE파일 인식이 안됨(근데 1360 써도 복구 안됨, 403160도 안됨)
애초에 값 자체가 각 프로그램마다 다를텐데 기본 설정을 쓴다는 것 자체가 이해 안가긴 했음
PE파일 구조를 모를때였어서... Ollydump의 Start Address==Image Base
Entry Point를 바꿔줄 때 Modify 값에 403160이면 3160을 써줘야함
Base of Code 등은 그대로 둬도 됨
그리고 dump뜰 때 jmp까지 진행해서 복호화 진행한 상태여야 함!!
드디어 성공...
+구버전의 경우 안정화가 되지 않아서 Rebuild import해제하고 dump후
따로 ImportREC나 LoadPE툴로 IAT를 복구한다고 함
c.f) 잘 된 언패킹 파일
2. X32Dbg의 Scylla 플러그인
수동으로 언패킹하기 위해서는 OEP, IAT, Imports를 맞춰줘야 함, 이것을 자동으로 해주는 플러그인
맨 마지막에 나오는 분기 그림은 IDA 에서 지원하는 기능. 가볍게는 Freeware로도 열람가능
2. 언패커 사용 upx.exe
Ollydbg로 들어가면 자동으로 Entry Point에 위치함 또는 F7로 따라가보기
(잘 안뜨면 Options - Debugging Options - Entry point of main module 로 설정)
Entry Point는 00401360
일단 어떤 프로그램인지 보기
단순하게 Check Serial 뜨고 틀리면 Wrong serial!!! 뜨는 프로그램
Search for text strings에서 바로 뜸
AD46DFS547
또는 MessageBox 뜨는 걸 알았으니 API(함수)검색하기
→ intermodular calls에서 MessageBoxA 찾아서 이동해보기
'REVERSING > codeEngn' 카테고리의 다른 글
[codeEngn] Basic RCE L03 (0) | 2021.02.24 |
---|---|
[codeEngn] Basic RCE L02 (0) | 2021.02.23 |
[abex] crack me #2 (0) | 2021.02.19 |
[xcz.kr] PROB.9 Easy Reversing [codeEngn] Basic RCE L15 (0) | 2021.02.18 |
[abex] crack me #3 (0) | 2021.02.17 |