-
lvl 04Wargame/CodeEngn Basic RCE 2018. 12. 11. 00:33
문제
이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가
풀이
→ 프로그램을 실행한다. 정상을 확인한다.
→ 디버깅을 탐지한다고 하니 일단 IDA로 Attach 시도한다.
→ 디버깅 당한다고 나타난다. 따라서, 프로그램 내부에 디버깅을 탐지하는 함수가 존재하여, 이 결과에 따라 상태문구를 출력하는 로직으로 추측된다.
→ 디스어셈블한다. _main_0 함수를 살펴보면 "IsDebuggerPresent" 함수라는 함수에 의해 디버깅을 탐지하고 있으며, 디버거가 탐지되면 왼쪽분기가 실행되며, 디버거가 탐지되지 않는다면, 오른쪽 분기가 실행된다.
→ 따라서, 디버깅을 탐지하는 함수의 이름은 "IsDebuggerPresent"이고, 이를 우회하려면 바이너리 패치를 통해 분기우회를 시도하면 된다.
댓글