2023-01-27에 쓸 예정
CodeEngn Challenge 링크 https://ch.codeengn.com/
Author: abex
File Password: codeengn
영상: https://www.youtube.com/watch?v=ff_1iUZWWqc
"HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가" 사실 이 문제를 리버싱을 하지 않고 문제설명만으로도 풀 수 있습니다.
GetDriveTypeA로 CD-ROM으로 인식하면 리턴하는 값은 5입니다. 그러므로 답은 5입니다.
정석적인 풀이
어셈블리어를 본다. 분석해야지
이게 MessageBoxA라는 함수구나.
아 C언어 소스코드가 저렇게 어셈블리어가 되는구나!
저값을 바꾸면 아이콘이 출력되는구나(라메드 유튜브: 리버싱 이론 강의 화이팅(보세요))
https://www.youtube.com/watch?v=Bcyy0M0SDWA&list=PLPv3psMPkcocVxzVTvt8ZHe5ZOhQPNVCg
어셈을 해석하니 esi의 초깃값은 401000이고 GetDriveTypeA 이후 eax는 3이다.
esi = 401000, eax = 3일때 inc는 값을 1 증가시키고, dec는 값을 1 감소시킬때 cmp eax,esi에 도달했을때 두 레지스터의 값은 어떻게 변했을까?
정답 esi = 401003, eax = 1
풀이
inc esi 곱하기 3은 401000+3 = 401003
dec eax 곱하기 2는 3-2 = 1
두값이 같게 될려면 리턴값은 5(드라이버가 CD-ROM일 경우 리턴값)가 되어야한다.
질문은 카카오톡 오픈프로필로 해주세요
https://open.kakao.com/me/Dhhd
https://open.kakao.com/me/Lamed
'코드엔진 Basic RCE L' 카테고리의 다른 글
코드엔진 Basic RCE L02 번외풀이-2 (0) | 2023.01.26 |
---|---|
코드엔진 Basic RCE L01 번외풀이 (0) | 2023.01.26 |
코드엔진 Basic RCE L02 번외풀이-1[필수] (0) | 2023.01.26 |
코드엔진 Basic RCE L02 풀이 (0) | 2023.01.26 |
코드엔진 Basic RCE 오리엔테이션 (0) | 2023.01.26 |