EASY7

[CodeEngn] Basic RCE L05 본문

Project/CodeEngn

[CodeEngn] Basic RCE L05

E.asiest 2019. 11. 10. 17:53

실습환경

VMware Workstation

OS : Window XP

OllyDbg(shadow)

IDA 32

 

문제

이 프로그램의 등록키는 무엇인가 

 

파일에 대한 이해

EP:0x55BB0

ImageBase:0x400000

 

<주요 동작>

시리얼 넘버가 틀리면 Wrong Serial, try again! 뜬다.

string 검색했을 땐 문자열이 검색되지 않는다...

<파일 특징>

UPX 패킹되어있다.

IDA를 통해 알 수 있는 정보 : UPX 패킹되어있음

 

 

 

OllyDbg로 열었을 때, 처음에 나오는 PUSHAD 명령어로 보아 UPX 패킹되어있는 것을 알 수 있다.

 

<패킹의 원리>

사진 출처 : http://cr3denza.blogspot.com/2014/02/upx-packing.html

 

패킹된 파일의 EP에 PUSHAD 명령어로 레지스트리 값들을 스택에 넣고 패킹을 풀고

POPAD 명령어로 앞서 스택에 넣어두었던 레지스트리 값들을 복원시킨다..

PUSHAD~POPAD사이에 합축해제 코드가 실행되고

POPAD 이후 JMP명령어를 통해 OEP로 이동한다.(OEP는 패킹된 파일의 원래 EP임)

* Section UPX0 : 메모리에 로드된 후 압축코드가 해제 될 공간

* Section UPX1 : 압축코드가 저장되는 공간

 

OllyDbg에서 PUSHAD 명령어
OllyDbg에서 볼 수 있는 POPAD명령어

 

 

 

 

문제 풀이-함께 UPX 언패킹을 해보자

어려운 작업이니 친절하게 설명하겠다.. (친절하지 않는 블로그라서 드문 케이스다)

1. 패킹된 파일을 올리디버거에서 열기

2. 커서를 아래로 내리면서 "POPAD"명령어를 찾는다.

POPAD 명령어를 찾음.

3. POPAD를 클릭 -> F2(breakpoint 설정) -> F9(breakpoint까지 실행)

 

 

4. JMP 00441270 :  점프될 주소(00441270)이 패킹되기전 원래 EP로 점프하라

F7 두번 입력

원래 EP로 왔음.

5. ollydbg plugin인 OllyDump->Dump debugged process 클릭

Entry Point 를 OEP의 RVA(Relative Virtual Address)로 변경.

Dump 클릭.

파일 저장.

자동으로 덤프 떠주고 파일을 지정한 자리에 던져줌!

 

 

 

 

 

 

문제 풀이

오른쪽 마우스->Search for ->Text strings referenced

누가봐도 시리얼넘버 같은 것이 있다...!

'Project > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L07  (0) 2019.12.26
[CodeEngn] Basic RCE L06  (0) 2019.11.15
[CodeEngn] Basic RCE L04  (0) 2019.11.10
[CodeEngn] Basic RCE L03  (0) 2019.11.05
[CodeEngn] Basic RCE L02  (0) 2019.11.05
Comments