URL : https://ch.codeengn.com/
이 문제는 디비거를 탐지하는 함수 이름을 찾는 것이다.
일단 04.exe 파일 실행시켜 보자
그러면 '정상' 이라는 문자가 출력이 된다.
'OllyDbg' 도구를 이용해 04.exe 파일을 뜯어보자
자 그러면 바로 문제를 풀어보자
03 문제에서 함수를 찾는 거였다.
그럼 똑같이 함수를 찾아보자
03 문제 포스팅에서 함수를 쉽게 찾는 방법이 있었다.
어셈블리코드 창에다가 우클릭 -> Search for -> All intermodular calls 를 클릭 해준다.
찾아보니 'IsDebuggerPresent' 가 수상하다
더블 클릭해서 들어가 보자
<F2>을 눌러 'break point'를 걸어주자
그리고 <F9>을 누르면 'break point'에 멈추게 된다
그리고 실행시키면
EAX 값이 1로 되는것을 확인 할 수 있다.
(EAX값이 왜 1로 되는지 자세히 보고 싶으면 'break point' 걸었던 곳에 <F7>을 눌러 내부로 들어가서 보면 된다.
그리고 실행 시키면 두 연산자를 비교 한다는 것을 알 수 있다.
따라서 JE를 만나 두 값이 같지 않으므로 점프하지 않기 때문에 '디버깅 당함'이라는 문자가 출력되는 걸 확인할 수 있었다.
그러면 EAX 값을 바꾸거나 JE코드 등 해결방법이 많다
그중에서 우린 EAX 값을 바꿔보자
처음 EAX 값을 확인해 보면 0 인걸 확인 할 수 있다.
'IsDebuggerPresent'로 넘어가면 1로 변경되었음을 알 수 있기에
1로 바뀐 EAX 값을 0으로 바꿔주면 쉽게 해결된다.
OK를 눌러 바꿔주고
계속 실행시켜보면
값이 같으므로 점프한다는 걸 확인할 수 있다.
그러면 이렇게 '정상'이라는 문자가 출력된다.
'【 리버싱 】 > [ CodeEngn ] Basic RCE 문제 풀이' 카테고리의 다른 글
[ CodeEngn ] Basic RCE 6 문제 풀이 (0) | 2021.07.21 |
---|---|
[ CodeEngn ] Basic RCE 5 문제 풀이 (0) | 2021.07.19 |
[ CodeEngn ] Basic RCE 3 문제 풀이 (0) | 2021.07.18 |
[ CodeEngn ] Basic RCE 2 문제 풀이 (0) | 2021.07.17 |
[ CodeEngn ] Basic RCE 1 문제 풀이 (0) | 2021.07.15 |