본문 바로가기
Study/Reversing

crackme3

by Melpin 2015. 5. 26.

먼저 crackme3 프로그램을 실행시켜보면 다음과같은 메세지박스를 볼 수 있다.


그리고 실행시켜보면 두번째 메세지박스 가 뜬다



back to user mode로 이 메세지박스의 위치로 보면 다음과 같은 화면을 볼 수 있다.


보면 Well done 이라는 메세지 박스를 출력하면 성공하는것 같다.

저 메세지박스를 출력하기위해선 우선 

JNZ SHORT Crackme_.00401060

을 점프하지 않아야된다.

분기문 위의 조건을 보면



먼저 CreateFileA 함수의 결과에따라 분기문이 하나 있는대 조건을 보면 

CMP EAX, -1의 결과가 같을시 점프를 한다고한다.

EAX의 값은 CALL CreateFileA에 의해 변조되는대

이 함수의 기능들을 위에서 살펴보면


OPEN_EXISTING



FileName = "abex.l2c"

를 찾는다고한다.

그럼 crackme3 파일의 위치에 임의로 abex.l2c 파일을 만들어주면



파일을 찾기는 찾았는대 값어치가 없는 키파일이라고 한다.

그다음 분기문을 넘어서 성공했다는 표시가 나오지 않는것이다.


다음 분기문의 조건검사때 CMP EAX 12

결과가 같을시 ZF 를 1로 세트해

JNZ SHORT Crackme_.00401060 

분기문을 넘지않고 원하는 결과값을 볼 수 있다.

EAX의 값은 바로위에 있는 함수 GetFileSize 함수에 의해서 설정되는대

FileSize 라는 말을 보아 text의 크기를 수정해보자.




EAX 의 값이 4로 바뀌어 있는것을 볼 수 있다.

그렇다면 12(16진수) 만큼 입력해주면 원하는 값을볼 수 있다.




'Study > Reversing' 카테고리의 다른 글

crackme5  (0) 2015.05.28
crackme4  (0) 2015.05.27
crackme2  (0) 2015.05.25
nag 제거, PE 헤더  (0) 2015.05.21
KeyFile 체크 문제 풀이, 바이너리 수정  (0) 2015.05.19

댓글