ii4gsp
CodeEngn - Basic RCE L04 본문
디버거 프로그램을 탐지하는 함수를 찾아보자
프로그램을 실행하면 "정상"이라는 문자가 출력된다.
올리디버거로 프로그램을 열어 실행하면 "디버깅 당함"이라는 문자가 출력된다.
Search for -> All intermodular calls를 클릭하고
IsDebuggerPresent라는 함수가 보인다.
함수이름부터 IsDebuggerPresent이기 때문에 디버거를 탐지한다고 의심하였다.
더블클릭을 하여 IsDebuggerPresnt함수가 실행되는 영역으로 이동해주었다.
IsDebuggerPresent함수를 호출하는 부분에서 break를 걸고 실행하면 아무런 문자도 출력이 안된다.
EAX레지스터의 값을 확인해보니 0이다.
IsDebuggerPresent함수를 호출하고 난 다음의 명령인 CMP ESI, ESP명령에서 break를 걸어주고
EAX레지스터의 값을 확인해보면 1이 되어있다.
EAX레지스터를 0으로 바꿔주고 실행해주면
"정상"이라는 문자가 출력된다.
IsDebuggerPresent함수에서 EAX의 값을 1로 바꿔서 디버깅되는것을 탐지함으로
IsDebuggerPresent함수가 디버거를 탐지하는 함수라는것을 알수있다.
'리버싱 > CodeEngn Basic RCE' 카테고리의 다른 글
CodeEngn - Basic RCE L06 (0) | 2020.02.02 |
---|---|
CodeEngn - Basic RCE L05 (0) | 2020.02.02 |
CodeEngn - Basic RCE L03 (0) | 2020.01.09 |
CodeEngn - Basic RCE L02 (0) | 2020.01.09 |
CodeEngn - Basic RCE L01 (0) | 2020.01.06 |
Comments