일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JS
- 딥러닝
- C언어
- 프로그래머스
- old-1
- 백준
- 퍼셉트론
- 자바스크립트
- openCV
- 크레인 인형뽑기
- 코딩테스트 연습
- 코드엔진
- c언어 게임
- 신규 아이디 추천
- webhacking.kr
- 웹해킹
- 웹케이알
- 리버싱
- Old-17
- 5585
- 자바
- boj
- c++
- 네트워크
- 10809
- tcp
- Old-14
- 계단함수
- 게임 프로그래밍
- 소프트맥스 함수
- Today
- Total
SteffenLee
[CodeEngn]basic 07 본문
코드엔진 07번 풀이입니다.
문제가 c드라이브 이름이 codeengn일 경우 생성된 시리얼을 찾으면 되나 봅니다.
그럼 c드라이브 이름을 codeengn으로 바꾸고 시작하겠습니다.
이제 올리디버거로 열어보겠습니다.
일단 한 번 실행시켜 보겠습니다.
이런 식으로 입력을 하니
시리얼이 다르다고 뜨네요.
그럼 밑으로 내리다 보면
많은 문자열이 보이는 곳이 있습니다.
밑에는 실패나 성공을 했을 때 뜨는 문구도 있습니다.
그리고 중간에 아까 입력했던 asdf라는 문자열도 있군요.
그렇다면 저 부근에서 문자열 비교가 일어난다는 걸 추측 할 수 있습니다.
추측이 맞는지 확인 해봅시다.
성공, 실패 여부를 확인하는 곳 앞에는 JE분기문이 있습니다.
이 분기문은 ZF를 보고 판단하여 분기하게 됩니다.
그렇다면 저 부분에서 가장 의심스러운 부분은 004010F7이 되겠군요.
004010F7에 BP를 걸고 실행을 해보면 레지스터 창에 ZF가 켜지는 걸 볼 수 있습니다.
이로서 저 004010F7에서 호출하는 부분에서 문자열 비교가 일어난다는 걸 알 수 있습니다.
그럼 그 위에 string1, 2가 비교 대상이 되겠구나를 조심스럽게 예측해봅니다.
그럼 string1의 내용을 프로그램에 넣어 봅시다.
그대로 집어넣고 F8를 눌러서 ZF를 확인해봅시다.
ZF가 1이 되었습니다.
이 상태로 쭉 실행하면
맞다고 뜨네요.
저희가 찾아야 할것은 뒤바뀐 볼륨의 이름입니다.
중간에 보면 GetVolumeInformation이라는 함수가 호출 되는데 이 함수는 볼륨의 정보를 읽어오는 함수입니다.
그럼 그 함수가 호출 되는 부분에 BP를 걸고 실행시키면.
볼륨 이름이 들어오게 됩니다.
그리고 실행을 시켜서 lstrcatA가 실행이 되면 뒷부분에 4562-ABEX가 붙습니다.
그렇게 되면 CodeEngn4562-ABEX가 되겠지요.
그럼 아까 정상적으로 실행시켰을 때는 EqfgEngn4562-ABEX입니다.
CodeEngn이라는 부분이 EqfgEngn으로 바뀌었군요.
볼륨이름이 CodeEngn이었으니 바뀐 EqfgEngn이 이번 문제의 정답겠군요.
인증해봅시다.
성공입니다.
감사합니다.
'Reversing > CodeEngn' 카테고리의 다른 글
[CodeEngn]basic09 (0) | 2018.04.08 |
---|---|
[CodeEngn]basic 08 (0) | 2018.01.11 |
[CodeEngn]basic 06 (0) | 2018.01.07 |
[CodeEngn]basic 05 (0) | 2018.01.05 |
[CodeEngn]basic 04 (0) | 2018.01.03 |