코드엔진 Basic RCE L04을 IDA로 분석하여 풀어보려고 한다.
문제는 다음과 같다.
실행파일을 디버거에 올리지 않고 바로 더블클릭하면 '정상'이라는 글자가 반복적으로 출력된다. 하지만 실행파일을 디버거에서 실행하면 '디버깅 당함'이라는 글자가 반복적으로 출력된다. 문제에서 말하는 '디버거 프로그램을 탐지하는 기능'에 따라서 출력되는 문자열이 다른 것을 짐작할 수 있다.
이제 프로그램을 IDA로 열어보았다. main()함수가 나오는데, 이를 더블클릭해서 안으로 들어가보았다.
IsDebuggerPresent
라는 함수가 나온다. 이 함수의 유무에 따라서 출력되는 문자열의 종류가 달라진다. 이 함수가 정답임을 유추할 수 있다.
IsDebuggerPresent
를 코드엔진 홈페이지에 제출한 결과, 맞았다. 끝!