Simples Crackme 4
- Question
· Serial Key를 찾아내는 문제
· 알맞은 Serial Key를 넣어주지 않으면 ‘Register' Button이 활성화 되지 않는다.
· 성공 Message
- Solve
· 문제를 풀기위한 정보
◦ Program 진행방식 파악
◦ Serial Key 파악
· Program 진행방식
◦ Program Debugging
▹ 'Search for → All intermodular calls'를 선택해 Program 내에서 사용된 함수를 파악한다.
▹ vba로 시작하는 함수가 있는 것으로 Visual Basic으로 만들어진 Program이라는 것을 알 수 있다.
▹ Visual Basic은 간접호출을 사용하기 때문에 실행하기 전에 Break Point를 지정한다.
▹ Serial Key가 언제 생성되는지 잘 모르는 상황이기 때문에 일단 비교함수(vbaStrCmp)에 BP를 지정한다.
▹ BP가 지정되고 나서 실행 후 한 글자씩 Serial Key를 입력해보면 한 글자가 입력될 때마다 비교가 된다는 것을 알 수 있다.
▹ Serial Key는 비교 시 Key가 입력된 Memory 영역에 접근하기 위해 Register를 이용하므로 Register에 접근하는 부분이 vbaStrCmp 함수 윗부분에 있을 것으로 추정되므로 해당 함수의 윗부분에 BP를 지정한다.
▹ BP 지정 시 vbaStrCmp 위의 명령어에서 어떠한 함수가 종료되는 지점이나 TEST EAX,EAX하는 지점으로 BP를 지정한다.
▹ 지정 후 명령어를 하나하나 실행해보면 EAX와 ECX에 주소 값을 저장하기 위해 MOV 명령어가 두 번 사용된 것을 볼 수 있고 PUSH 명령어 두 개의 명령어 이용해 Stack에 저장하는 것 또한 볼 수 있다.
▹ 여러 번 실행 시켜보면 EAX에는 입력한 값이, ECX에는 Serial 값이 저장되는 것을 볼 수 있다.
▹ ECX에 저장되는 값을 PUSH 명령어가 실행되기 직전에 살펴보면 UNICODE 값으로 저장되어 있는 값을 볼 수 있다.
◦ 정리
▹ ThunRTMain 함수 호출
▹ Serial Key 생성(vbaStrVarMove 위 지점으로 추측)
▹ 문자열 비교(vbaStrCmp 이용)
▹ 'Register' Button 활성화
▹ Button을 누를 시 성공 Message 출력
· Serial Key 파악
◦ Serial Key : 2054280
'Reversing > Simples Creckme' 카테고리의 다른 글
Simples Crackme 6 (0) | 2015.08.16 |
---|---|
Simples Crackme 5 (0) | 2015.08.16 |
Simples Crackme 3 (0) | 2015.08.16 |
Simples Crackme 2 (0) | 2015.08.16 |
Simples Crackme 1 (0) | 2015.08.16 |