Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Study

CodeEngn Basic 01 본문

Reversing/코드엔진

CodeEngn Basic 01

마늘부추 2019. 6. 13. 11:00

1. CodeEngn Basic 01

[그림 1.1]

레지스터의 값을 수정하는 문제이다.

 

1.1 풀이 과정

[그림 1.2]

파일을 열어보면 프로그램의 흐름을 알 수 있다.
00401024에서 EAX와 ESI의 값을 비교 후 같으면 0040103D로 분기하는 조건문이다.

 

우선 GetDriveTypeA 함수의 반환값이 무엇인지 실행시켜보자.

 

[그림 01.3]

함수 실행 후 EAX의 값은 00000003이다.

그다음 조건문 실행 직전의 값은 무엇인지 실행시켜보자.

 

[그림 1.4]

EAX는 00000001로 원래 값에서 2가 감소되었음을 알 수 있다.
ESI는 최종적으로 00000003의 값을 가지게 된다.

 

함수 호출 후 분기문까지 DEC EAX가 두 번 등장하였으니 디버깅을 다시 시작해 GetDriveTypeA의 반환값을 초기값에서 2를 더해준 00000005로 수정해준다.

 

[그림 1.5]

레지스터의 값을 임의로 바꾸려면 해당 레지스터를 더블클릭하면 된다.

 

[그림 1.6]

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