Study
CodeEngn Basic 01 본문
1. CodeEngn Basic 01
레지스터의 값을 수정하는 문제이다.
1.1 풀이 과정
파일을 열어보면 프로그램의 흐름을 알 수 있다.
00401024에서 EAX와 ESI의 값을 비교 후 같으면 0040103D로 분기하는 조건문이다.
우선 GetDriveTypeA 함수의 반환값이 무엇인지 실행시켜보자.
함수 실행 후 EAX의 값은 00000003이다.
그다음 조건문 실행 직전의 값은 무엇인지 실행시켜보자.
EAX는 00000001로 원래 값에서 2가 감소되었음을 알 수 있다.
ESI는 최종적으로 00000003의 값을 가지게 된다.
함수 호출 후 분기문까지 DEC EAX가 두 번 등장하였으니 디버깅을 다시 시작해 GetDriveTypeA의 반환값을 초기값에서 2를 더해준 00000005로 수정해준다.
레지스터의 값을 임의로 바꾸려면 해당 레지스터를 더블클릭하면 된다.
0040103D 주소로 분기하는데 성공하였다.
1.2 Comment
컴퓨터의 환경은 Windows8.1인데 이 환경에서는 ESI 레지스터가 갖는 값이 달랐다.
codeengn을 통과하고 싶다면 vmware windows7 환경에서 해야 한다.
'Reversing > 코드엔진' 카테고리의 다른 글
CodeEngn Basic 06 (0) | 2019.06.15 |
---|---|
CodeEngn Basic 05 (0) | 2019.06.15 |
CodeEngn Basic 04 (0) | 2019.06.15 |
CodeEngn Basic 03 (0) | 2019.06.13 |
CodeEngn Basic 02 (0) | 2019.06.13 |