일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 자바
- Old-14
- 계단함수
- c언어 게임
- 웹해킹
- webhacking.kr
- old-1
- JS
- 리버싱
- 신규 아이디 추천
- 자바스크립트
- 10809
- 코드엔진
- 백준
- Old-17
- 5585
- 소프트맥스 함수
- 퍼셉트론
- 웹케이알
- 딥러닝
- tcp
- 크레인 인형뽑기
- c++
- 네트워크
- 게임 프로그래밍
- openCV
- boj
- 프로그래머스
- 코딩테스트 연습
- C언어
Archives
- Today
- Total
SteffenLee
[CodeEngn]basic 04 본문
코드엔진 basic 04번 풀이입니다.
안티 디버깅이 되있는 프로그램입니다.
프로그램을 실행시키면
정상이라는 내용이 계속해서 출력되는군요.
그럼 올리디버거에 프로그램을 올리고 실행시켜보겠습니다.
올리디버거에서 실행시켰더니 디버깅 당함이라고 뜨는군요.
그렇다면 이제 디버깅을 탐지하는 함수를 찾아봅시다.
Ctrl + F2를 눌러 재시작해주시고 F8로 쭉 실행시켜봅니다.
중간에 실행이 멈추면서
무언가를 호출해오면서 cmd창에 디버깅 당함이라 뜨기 시작합니다.
그렇다면 다시 한번 재시작해주시고 저 부분까지 내려옵니다.
이번에는 F8이 아닌 F7로 내부로 들어가 봅니다.
이런식으로 내부로 들어오게 됩니다.
F8로 천천히 실행시키다 보면 중간에
IsDebuggerPresent라고 수상하게 생긴 함수가 있습니다.
이 부분에서 주의 깊게 봐야할 부분은 EAX 값입니다.
함수를 지나기 전에는 EAX 값이 0 입니다.
하지만 함수를 지나고 나면
EAX 값이 1이 됩니다.
이로써, 알 수 있는 사실은 IsDebuggerPresent는 디버거가 켜져 있으면 EAX가 1이 된다는 걸 알 수 있습니다.
그럼 반대로 꺼져있으면 EAX가 0이 되겠군요.
한번 패치를 해봅시다.
IsDebuggerPresent가 호출되는 그 부분을
이런식으로 패칭한 후 실행 시키면
올리디버거에서 실행시켰어도 정상이라 뜨게 됩니다.
그러면 04문제는 디버거 탐지 함수의 이름을 인증하는거였으니 인증하러 가봅시다.
성공입니다.
감사합니다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn]basic 06 (0) | 2018.01.07 |
---|---|
[CodeEngn]basic 05 (0) | 2018.01.05 |
[CodeEngn]basic 03 (0) | 2018.01.01 |
[CodeEngn]basic 02 (0) | 2017.12.29 |
[CodeEngn]basic 01 (0) | 2017.12.29 |
Comments