리버스엔지니어링 문제 1

2015. 3. 22. 14:46Security ★ Development/Reversing

반응형

http://codeengn.com/challenges/basic/01


파일을 받아 더블클릭하여 실행하면 Make me...가 나오고 다음으로 Nah... This is not a CD-ROM... 이 나옵니다.  

CD-ROM으로 인식시키기 위해 GetDriveTypeA의 리턴값을 바꿔야한다고합니다.  해당 파일의 어셈블리 부분입니다.

밑에 2개의 분기문이 있고 OK, 부분을 출력해야 정답이 됩니다.  분기문을 보면 00401026부분 위에 CMP EAX, ESI가 있습니다.  JE명령이기 때문에 ==일때 조건문을 실행합니다.  그럼 EAX와 ESI의 값이 같아야 한다는건데 브레이크 포인트를 걸고 진행해보면 해당 위치에 도달했을 시 EAX는 1이고 ESI는 3의 값을 가집니다.  GetDriveTypeA를 호출하는 부분부터 ESI와 EAX의 값의 증감이 있는데 이 결과가 1과 3이라는 것입니다.  이 두 값을 맞춰줘야 합니다.  함수의 리턴값은 보통 EAX에 저장됩니다.  결과, EAX의 값을 3으로 맞춰줘야하므로 GetDriveTypeA의 리턴값은 5가되어야 합니다.



'Security ★ Development > Reversing' 카테고리의 다른 글

리버스엔지니어링 문제 3  (0) 2015.03.23
리버스엔지니어링 문제 2  (0) 2015.03.22
보안 취약점  (0) 2015.03.16
무분기 로직  (0) 2015.03.09
api 리버싱 3 - RtlGetElementGenericTable  (0) 2015.03.07