반응형
Codeengn Challenges = Basic 04 풀이.
4번이다. 말 그대로 디버거를 탐지하는 함수의 이름은 무엇인지를 묻는 문제.
디버거 프로그램을 탐지하는 함수의 이름은 IsDebuggerPresent라고 한다.
API 상태에서 IsDebuggerPresent를 쓰면 프로그램 중간에 디버거를 탐지할 수 있다. 리턴 값으로는 디버거가 작동중이면, 0이 아닌 값. 디버거가 작동중이지 않으면, 0를 리턴.
프로그램을 실행시키면 아래와 같은 화면으로 루프를 돈다.
디버거상에서 실행.
아래와 같이 디버깅 당함이 뜬다.
안티디버거 프로그램으로 크랙하는 이유는 디버거로 돌려도 보통 프로그램과 다름없이 실행되도록 하게끔 만드는 것이다.
아래와 같이, 전 문제에서 알아봤었던 IsDebuggerPresent함수가 있다. 브레이크포인트를 걸고, F9를 통해 이 함수가 쓰이는 곳까지 넘어간다. 아래 화면 2개는 바로 전 문제인 3번에서
자세히 설명했던 과정들이다.
위의 화면에 대한 설명이다.
즉 IsDebuggerPresent는 다시 말해, 반환 값에는 0과 1이 있는데, 정상적일 때는 0을
반환하고, 디버깅 감지하면 1을 반환.
CF) 문제를 풀면 풀수록, 알아야 할 개념들이 늘어난다.
반응형
'# Related site issues > CODEENGN' 카테고리의 다른 글
Codeengn Challenges = Basic 06. (0) | 2018.03.28 |
---|---|
Codeengn Challenges = Basic 05. (0) | 2018.03.28 |
Codeengn Challenges = Basic 03. (0) | 2018.03.28 |
Codeengn Challenges = Basic 02. (0) | 2018.03.28 |
Codeengn Challenges = Basic 01. (0) | 2018.03.28 |