리버스엔지니어링 문제 1
2015. 3. 22. 14:46ㆍSecurity ★ 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 |