본문 바로가기

Reverse Engineering

bypassing IsDebuggerPresent

반응형

IsDebuggerPresent bypass


Section 1. What is IsDebuggerPresent?

IsDebuggerPresent 디버깅 감지를 하는 유저 모드 디버거 함수이다.


이 함수를 사용하는 이유는 디버거를 이용하여 이상한 짓(?)을 하는 것을 막으려는 의도가 있지만.

우회 방법은 매우 간단하다;


그래서 상업용에는 디버거 감지를 Themida같은 경우에는 프로텍터에서 자체적으로 지원하고 있고,

그 이외에도 각자의 디버거 감지를 하는 솔루션을 가지고 있어 이 함수는 주로 사용하지는 않는다.

(그러나 해킹대회 문제에서는 나옴ㅋ)


일단 코딩은 귀찮으니 CodeEngn Level 04 문제를 이용하기로 했다.



Entrypoint 00401030


F8로 쭉 한번 실행하니..

디버깅 당함 이 뜹니다.. 

일단 그래서 IsDebuggerPresent 가 있어서 함수 내부로 들어가보니


음?

EAX에 박아둠 ㅎ


그래서 혹시나 하는 마음에 EAX값을 0로 바꾸고 ㄱㄱ


올ㅋ


이런 방식으로 우회를 하는 것을 보실 수 있습니다.


실제 IsDebuggerPresent 함수를 보시면 

디버거가 감지되면 1

감지 없으면 0이 return 되니 RETN EAX를 0로 바꾸면 끝~



반응형

'Reverse Engineering' 카테고리의 다른 글

크으립토락커 한글판 간단분석  (0) 2015.05.04
SysFader는 무엇일까?  (0) 2014.07.17
CSAW CTF 2013 Reversing 200 Write-up  (0) 2013.10.04
ollydbg 2.0.1  (0) 2013.09.30