Simples Crackme 3
- Question
· Program에서 요구하는 Key File 생성
· 성공 / 실패 1/ 실패 2 Message
- Solve
· 문제를 풀기위한 정보
◦ 구성 함수 파악
◦ Program 진행 방식
◦ Key File의 조건
· 구성 함수 파악
◦ 사용된 함수
▹ MessageBoxA
▹ CreateFileA
▹ GetFileSize
◦ 사용된 함수를 보면 Win32 API 함수가 사용되었고 C언어로 작성된 Program이라는 것을 알 수 있다.
◦ 사용된 함수에 대한 설명
▹ MessageBoxA
▸ Message Box를 출력하는 함수
▹ CreateFileA
▸ File 혹은 객체(Object)를 생성하거나 열 수 있는 함수
▸ 매개변수 FileName와 일치하는 객체를 Mode 값에 따라 생성하거나 연다.
▸ Mode = OPEN_EXISTING : 객체를 열 수 있는 Mode로 File이 존재하지 않을 시 'FFFFFFFF'가 반환된다.
▹ GetFileSize
▸ 이전에 사용된 함수의 반환 값을 이용해 File에 접근, 크기를 알아내 File의 크기를 알아내는 함수
· Program 진행 방식
◦ CreateFileA 함수와 CMP, JMP 명령어를 이용해 File의 존재유무를 판단
◦ File이 존재한다면 CMP 명령어를 이용해 0x12와 해당 File의 크기를 비교
◦ 크기가 같다면 성공 Routine의 Message를, 크기가 다르다면 실패 Routine의 Message를 출력한다.
· Key File의 조건
◦ abex.l2c라는 File 이름을 가져야한다.
◦ 크기는 12Byte여야 한다.
- Answer
· KeyFile 생성
◦ Craceme 3 Program이 있는 위치에 메모장을 생성해 18Byte만큼 문자(18글자)를 채우고 저장한다.
◦ 저장한 File의 이름을 'abex.l2c'로 바꾸면 Key File이 완성된다.
'Reversing > Simples Creckme' 카테고리의 다른 글
Simples Crackme 6 (0) | 2015.08.16 |
---|---|
Simples Crackme 5 (0) | 2015.08.16 |
Simples Crackme 4 (0) | 2015.08.16 |
Simples Crackme 2 (0) | 2015.08.16 |
Simples Crackme 1 (0) | 2015.08.16 |