문제입니다.

파일을 실행해보겠습니다.

무엇으로 컴파일 되었는지 확인해보겠습니다.

비주얼 C++이네요

이제 디버거를 이용하여 분석해보겠습니다.

디버거로 실행해보니 "디버깅 당함"이라는 문자열이 뜨네요

먼저 어떤 함수들을 사용하는지 알아보도록 하겠습니다.

[Search for] -> [All intermodular calls] 클릭!

쭉 내리다보면 "IsDebuggerPresent"라는 디버거 관련 함수가 보입니다.

MSDN을 통해 어떤 역할을 하는지 확인해보겠습니다.

리턴 값을 보면 정상프로세스는 0, 그렇지 않다면 0이 아니네요

break point를 걸고 더블클릭해서 들어가보겠습니다.

40106F를 보면 431024에 저장된 "디버깅 당함"문자열을 push하고 있네요

40107E부분은 43101C주소에 저장된 "정상"이라는 문자열을 push하고 있네요 ~

그럼 40107E로 무조건 점프하게 만들면 될 것 같습니다.

[방법1]

JE 부분을 JNZ로 바꾸어주는 방법

[방법2]

XOR EAX,EAX를 만들어 리턴값을 0으로 만들어 버리는 방법

수정 후 break point를 풀고 f9를 누르면!

정상으로 출력되는 것을 확인 할 수 있습니다.

문제는 디버거를 탐지하는 함수를 찾는 것이므로 "IsDebuggerPresent" 이것이 답이 되겠습니다.

Basic RCE L04 성공!

'WAR GAME > CodeEngn(Basic)' 카테고리의 다른 글

Basic RCE L06  (2) 2020.04.29
Basic RCE L05  (2) 2020.04.29
Basic RCE L03  (2) 2020.04.28
Basic RCE L02  (2) 2020.04.28
Basic RCE L01  (2) 2020.04.28

+ Recent posts