Phantom

CrackMe - 3 본문

Pwnable/Crackme 직접 푼것

CrackMe - 3

Ph4nt0m_ 2016. 3. 1. 13:10
반응형

프로그램을 클릭하면 이렇게 뜨면서 종료한다.

보아하니 keyfile이 없어서 에러라 뜨는 것 같다. 디버거로 열어보자

보아 하니 CreateFileA함수의 리턴값으로 아래 JE문에서 분기가 일어나는 것 같다. CreateFileA함수에 대해 알아봐야 할 것 같다.

CreateFile 함수에 대한 자세한 것은 여기

함수의 인자 중에 Mode에서 OPEN_EXISTING으로 되어 있다.

존재하는 파일을 연다는 것이다.

그리고 호출 된 후 eax를 비교하는 것을 보아 리턴값만 알면 될 것 같다.

 

함수가 리턴에 성공하면, 리턴값은 특정 파일이나 디바이스, 이름있는 파이프, 또는 메일 슬롯의 열려있는 핸들값이 된다. 영어 맞나..?

 

나는 파일이 없으므로 -1을 리턴하고 같으므로 JE에서 에러로 향한다.

그럼 파일을 만들고 다시 실행해보자

다행히 위의 CMP문을 통과 했고 이것을 만났다.

GetFileSize함수이다. 나는 파일 안에 아무것도 써넣은 것이 없으므로 사이즈는 0이다.

그리고 함수의 리턴 값으로 0x12와 비교한다 18바이트이다.

여기서도 다르면 에러로 향하게 된다

다시 파일 사이즈를 18바이트로 맞추고 실행한다.

같으므로 아래의 분기문을 지나친다.

Clear!!

반응형

'Pwnable > Crackme 직접 푼것' 카테고리의 다른 글

CrackMe - 6  (0) 2016.03.12
CrackMe - 5  (0) 2016.03.10
CrackMe - 4  (0) 2016.03.10
CrackMe - 2  (0) 2016.02.28
CrackMe - 1  (2) 2016.02.28
Comments