CafeM0ca

[리버싱]abex crackme3 본문

Hacking/abex crackme

[리버싱]abex crackme3

M0ca 2018. 1. 16. 19:10
반응형

crackme3.exe

사용툴:immunity debugger

포스팅 3분의 1쯤 썼는데 다 날라가버렸다.



키파일을 확인하기위해 확인버튼을 눌러달라고 한다.

눌렀는데 없다고하고 끝나버린다.

이 부분에서 파일을 만드는데 인자들을 보자

hTemplateFile 

 파일의 속성을 제공할 템플릿 / 반드시 NULL이어야함

Attributes 

 파일 속성 / 현재 노말이다. 인자에따라 숨김파일,암호화파일,시스템파일,읽기전용파일,임시파일 등으로 만들 수 있다.

Mode 

파일 생성 or 열기 / OPEN_EXISTING은 이미 존재하는 파일을 엶.

pSecurity 

파일 보안 속성 / 파일 보안 속성 지정하는 구조체. NULL이면 자식프로세스에게 핸들이 상속되지 않으며 디폴트 보안 설정자

ShareMode 

공유 모드 / 0은 다른 프로세스 파일,장치로부터 열기,읽기,쓰기 권한 요청을 막는다. 1은 읽기, 2는 쓰기, 4는 삭제 가능하게함

Access 

파일 권한 / 현재 읽기 권한이다. 쓰기는 GENERIC_WRITE

FileName 

파일 이름 / abex.l2c 가 생길 듯  


여기까지 본다면 이미 있는 파일을 읽기 권한으로 여는데 열기,읽기,쓰기 권한 요청이 막혀있고 열려는 파일의 이름은 abex.l2c이다.

CreateFileA함수가 끝난뒤 eax를 -1과 비교해서 같으면 파일을 찾을 수 없다고 한다. (함수의 반환값은 eax로 전달한다.)

파일이 없는데 열려고 하니 -1을 반환한다. 파일을 임의로 만들어주자. 만들어줄때 확장자가 .l2c인데 메모장으로 만들어서 저장할때 파일형식을 모든 파일로 바꿔주고 저장하면 된다.

만들어주고 다시 디버깅해보면 무사히 넘어간다.

하지만 GetFileSize함수를 보면 리턴값이 eax로 반환될테고 eax를 12랑 비교하는걸 보면 파일 사이즈를 12로 맞춰줘야한다. 16진수임을 생각하면 18byte다. 메모장으로 18byte를 써주고(영어,숫자는 1byte, 한글은 2byte) abex.l2c로 저장하면 된다. (경로는 같아야함)



abex.l2c파일은 열기가 안될꺼다.  CreateFile함수의 인자로 공유모드가 0으로 전달 되었기때문이다.





반응형

'Hacking > abex crackme' 카테고리의 다른 글

[리버싱]abex crackme2  (0) 2018.01.15
[리버싱]abex crackme1  (0) 2018.01.13
Comments