abex' crackme #3
분석하기 전에 실행을 해보자.
"Click OK to check for the keyfile." 문구가 나온다.
확인을 누르니 "Hmmmmm, I can't find the file!" 문구가 나온다.
keyfile을 생성한 뒤 key값을 파일 안에 넣는 문제일 것 같다..
OllyDbg로 열면 바로 나와있다.
CreateFile 함수의 인자부터 알아보자.
FileName : "abex.l2c" (영어 l)
Access : GENERIC_READ (읽기 권한)
ShareMode : 0 (모든 프로세스의 접근 차단)
pSecurity : NULL (사용하지 않을경우 NULL)
Mode : OPEN_EXISTING (파일이 존재할 경우에만 파일 열기, 존재하지 않을경우 에러 발생)
Attributes : NORMAL (모든 속성을 지정하지 않는다)
hTemplateFile : NULL (사용하지 않을 경우 NULL)
참고 블로그 Luiten Lab [CreateFile 함수]
"abex.l2c" 파일을 생성해 주어야 할 것 같다.
밑으로 내려오면 GetFileSize 함수로 파일 크기를 확인한다.
GetFileSize 함수의 인자부터 알아보자.
hFile : 파일 사이즈를 알기위한 해당 파일에 대한 핸들 (GENERIC_READ, GENERIC_WRITE로 생성해야 사용가능)
pFileSzieHigh : 32비트가 넘을 경우 사용하는 파라미터 (32비트가 넘지 않는다면 NULL)
Return값 : 파일 사이즈 리턴
CMP EAX. 12
함수 호출 뒤 리턴값을 12랑 비교하므로 "abex.l2c"파일에 18바이트를 채워넣어야 한다. (Hex 12 = Dec 18)
"abex.l2c" 파일에 아무 문자 18 byte를 채워주고 "abex' crackme3.exe" 파일과 같은 폴더에 넣어준다.
'Security_ > Reversing' 카테고리의 다른 글
[풀이] abex' crackme #5 (0) | 2021.09.19 |
---|---|
[풀이] abex' carckme #4 (0) | 2021.09.19 |
[정리] 함수 호출 규약 cdecl, stdcall, fastcall (0) | 2021.09.16 |
[풀이] abex' crackme #2 (0) | 2021.09.15 |
[풀이] abex' crackme #1 (2) | 2021.09.15 |
댓글