EASY7

[CodeEngn] Basic RCE L04 본문

Project/CodeEngn

[CodeEngn] Basic RCE L04

E.asiest 2019. 11. 10. 03:45

실습환경

VMware Workstation

OS : Window XP

OllyDbg(shadow)

IDA 32

 

문제

이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가

 

 

파일에 대한 이해

ImageBase : 0x100000

EP : 0x1000

 

IsDebuggerPresent 함수

-디버거가 아니면 0

-디버거면 0이 아닌 값.

 

문제 풀이

나는 올리디버거로 돌려도 정상으로 나오는데 어찌된 일인지 해서 리버싱 선배님들한테 물어보니!

올리디버거를 플러그인으로 패치한 것 같다고, 올리디버거 홈페이지에서 오리지널 버전으로 다운로드 받아서 시도해보라고 하셨습니다!

생각해보니 이 올리디버거는 악성코드 분석 교육받을 때 받은 거라서 IsDebuggerPresent함수를 감지하면 디버거가 아니라는 답을 주는 것 같습니다.

플러그인으로 패치된 올리디버거
오리지널 버전으로 실행시킨 04.exe
메뉴-plugin에 "hide debugger"와 "isDebugPresent"를 볼 수 있음.

 

 

1. IsDebuggerPresent 함수를 search 해서 F4(커서 전까지 실행)->F8(함수로 들어가지않고 실행)

 

결과값 EAX가 1인 것으로 보아 디버거임을 감지하였음.

 

 

 

2. 이번엔 IsDebuggerPresent의 결과값(EAX)를 강제로 0으로 변경함.

 

3. 정상으로 나오는 것으로 보아 IsDebuggerPresent 의 기능을 알 수 있었음.!

 

참고

IsDebuggerPresent msdn

https://docs.microsoft.com/ko-kr/windows/win32/api/debugapi/nf-debugapi-isdebuggerpresent?redirectedfrom=MSDN

 

IsDebuggerPresent function (debugapi.h) - Win32 apps

Determines whether the calling process is being debugged by a user-mode debugger.

docs.microsoft.com

 

 

 

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

[CodeEngn] Basic RCE L06  (0) 2019.11.15
[CodeEngn] Basic RCE L05  (0) 2019.11.10
[CodeEngn] Basic RCE L03  (0) 2019.11.05
[CodeEngn] Basic RCE L02  (0) 2019.11.05
[CodeEngn] Basic RCE L01  (0) 2019.11.05
Comments