336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
안녕하세요 오늘은 L04 문제를 풀어보겠습니다.
이 문제를 풀어보기전 한가지 알아야 할 함수가 있습니다.
바로 IsDebuggerPresent 라는 함수인데요. 이 함수는 디버깅을 감지하면 EAX에 1을 정상이라면 0을 대입해줍니다. 즉 리턴값을 1 아니면 0으로 해준다는 소리죠.
실행 화면입니다.
그냥 실행해서 그런지 정상이라고만 출력하는군요. 그렇다면 올리디버거로 들어가 실행해보겠습니다.
흠 디버깅 당함이라 뜨는군요? 그럼 코드를 봐야할 것같지만.. 그냥 보면 딱히 큰 이득이 안떨어집니다. 그러니 저번처럼 Search for -> All intermodular calls 를 이용해서 사용된 함수만 훑어봅시다.
사용된 함수를 위에서부터 훑어보다 IsDebuggerPresent 라는 익숙한 함수가 보이시나요?
이 함수를 더블클릭해서 들어가봅시다.
(그림이 안보여도 그닥 상관은 없습니다.)
근데 가만히 생각해보니 그냥 EAX에 0을 반환해주기만 해도 안티디버깅이 먹통이 되겠군요? MOV EAX, 0으로 바꿔보겠습니다.
이제 다시 디버거로 실행시켜보도록 하겠습니다.
네 다행히 실행되네요. 그러므로 이 프로그램에 사용된 안티 디버깅 함수를 알수있겠네요
읽어주셔서 감사합니다.
덧글은 글쓴이에게 큰 힘이 됩니다 ☆
'해킹 > 리버스 엔지니어링' 카테고리의 다른 글
코드엔진 basic RCE L06 풀이 (back to user mode) (1) | 2012.06.06 |
---|---|
코드엔진 basic RCE L05 풀이 (UPX 언패킹) (3) | 2012.05.28 |
코드엔진 basic RCE L03 풀이 (0) | 2012.05.23 |
코드엔진 basic RCE 2번(L02) 풀이 (1) | 2012.05.18 |
리버싱 예제 1 부가설명(코드엔진 basic rce L01) (0) | 2012.05.15 |