본문 바로가기

Reversing/CodeEngn

[CodeEngn] Basic RCE L04풀이

https://ch.codeengn.com/

 

CodeEngn.com [코드엔진]

코드엔진은 국내 리버스엔지니어링 정보공유를 위해 2007년 부터 리버스엔지니어링 컨퍼런스 및 세미나, 워크숍을 현업 실무자들과 함께 운영하고 있는 비영리 커뮤니티입니다.

ch.codeengn.com


그림 1

이번 문제는 안티디버깅 함수 이름을 찾아야 한다.

 

일단 파일을 실행시켜 보았다.

 

그림 2

실행시켜보니 정상이라는 단어가 계속 출력되는 것을 확인할 수 있다.

 

X32디버거를 통해 분석해보았다.

 

맨 처음으로 문자열 찾기를 통해 확인할 수 있는 문자열을 확인해보았다.

 

그림 3

디버깅당함,정상이라는 단어를 볼 수 있었고 해당 위치로 이동해보았다.

 

그림 4

짧지만 그래프 모드로 확인해보았다.

 

그림 5

세 번째노드를 보니 eax0이면 정상을 출력하고 0이 아니면 디버깅당함을 출력한다고 한다.

 

디버깅 상태에서 실행을 시켜보았더니 이번에는 디버깅당함이라는 문자열들이 계속 출력되는 것을 확인할 수 있었다.

 

그림 6

해당 파일에서 디버거를 탐지해서 문자열이 바꿔 출력되는 것이라고 예측할 수 있었다.

 

그럼 eax 값에 어떤 값이 들어있는지 확인하기 위해 브레이크포인트로 확인해보았다.

Test 부분에 브레이크 포인트를 걸고 실행하였다.

 

그림 7

오른쪽의 eax 레지스터를 보니 1이 저장되어 있는 것을 확인할 수 있었다.

 

해당 상태에서 F8을 이용하여 한 줄씩 실행해보면 디버깅당함으로 진행한다.

그래서 eax 값을 0으로 수정해보았다.

 

그림 8

Eax 값을 수정하니 정상 쪽으로 진행하는 것을 확인할 수 있었다.

 

그럼 어떤 함수의 반환 값으로 eax값이 나오는지 확인해야 하는데, 바로 위에 IsDebuggerPresent 함수를 통해 eax값이 정해지는 것을 확인할 수 있었다.

 

따라서 해당 함수를 통해 디버깅이 탐지되는 것을 알 수 있다.

'Reversing > CodeEngn' 카테고리의 다른 글

[CodeEngn] Basic RCE L06풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L05 풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L03풀이  (0) 2021.08.01
[CodeEngn] Basic RCE L02풀이  (0) 2021.07.31
[CodeEngn] Basic RCE L01풀이  (0) 2021.07.31