일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- probgame
- 라업
- 라이트 업
- 드림핵
- 리버싱
- 해킹캠프
- 풀이
- 2021
- write up
- 리버스 엔지니어링
- 라이트업
- 변수
- 시탭
- 파이썬
- write-up
- 강의
- 히공
- reversing.kr
- web
- vsCode
- 워 게임
- PYTHON
- reversing
- ShaktiCTF
- 뭉뭉
- 코드엔진
- Basic
- ctf
- c언어
- hackingcamp
히공
코드엔진 - basic 01 본문
오늘은 코드엔진 basic 1번 문제 풀어보겠습니다.
MessageBox로 나오는 군요.
확인을 눌러보니 또 나왔습니다.
x32dbg로 확인해 보았습니다.
0x401026부분이 성공, 실패로 가는 분기점 입니다.
cmp, je를 같이 해석해보자면
if (eax==esi) 라고 볼 수 있습니다.
그리고 GetDriveTypeA를 호출합니다.
docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdrivetypea
GetDriveTypeA function (fileapi.h) - Win32 apps
Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
docs.microsoft.com
지금은 C드라이브 이니까 3이 반환이 됩니다.
GetDriveTypeA함수는 인자로 넣은 주소의 드라이브가 무엇인지 숫자로 판명해주는 겁니다.
CD-rom으로 인식 시키라고 하였지요?
eax에 GetDriveTypeA의 반환값이 저장됩니다.
그리고 dec,inc로
eax값은 두번 내리고, esi는 3번 올리는 것을 볼 수 있습니다.
최종 eax:1, esi:3
결국 eax반환값은 5면 됩니다.
msdn에서 볼 수 있듯 CDROM 이라면 5를 반환합니다.
성공!!
'reverse engineering > CodeEngn' 카테고리의 다른 글
코드엔진 - basic 06 (6) | 2020.09.16 |
---|---|
코드엔진 - basic 05 (0) | 2020.09.10 |
코드엔진 - basic 04 (0) | 2020.09.10 |
코드엔진 - basic 03 (0) | 2020.09.10 |
코드엔진 - basic 02 (0) | 2020.09.10 |