reversing/codeEngn

코드엔진 베이직 4번 문제

phantom0219 2019. 9. 6. 17:33

맨 처음으로 실행 파일을 시작하면

 

정상이라고 나옵니다. 그런데 우리가 여기서 무엇을 분석해야 되고 무엇을 알아야 하는 가?

 

이와 같이 디버거를 탐지하는 함수의 이름은 무엇인가... 를 찾아야 된다.

 

그렇기에 올리디 버거로 실행시키면 처음 이와 같은 화면을 보실수 있습니다.

 

저는 여기서 f8을 누르며 쭉 따라가 봤습니다.

제가 주석으로도 표시를 해 두었지만 저기 408453번지에서 call이 실행되면...

이와 같이 디버깅당함이 나옵니다. 그렇기에 전에 f2로 브레이크 포인트를 걸고(실행을 여러 번 해보니라...)

 

 

이제 f7로 함수로 call로 들어가 보면....


이렇게 나옵니다. 처음 1000ms Sleep으로 시작해서

 

신기하게 보이는 IsDebuggerPresent가 나오고 그 밑으로 실행을 하면 점프 문 후로 정상이냐

 

디버깅당함이냐 결정이 되는 거 같습니다.

여기서 코엔 문제의 답은 IsDebuggerPresent 함수입니다.

 

문제를 완벽히 이해를 하려고 IsDebuggerPresent 우회 방법을 찾아보았습니다.

 

분석하는 데 eax가 보이는데 1입니다. 이 eax를 0으로 만들면 우회도 간단한 것으로 보입니다.

 

이것으로 4번 문제 풀이를 마치도록 하겠습니다. 

반응형