본문 바로가기

Reversing/Simples Creckme

Simples Crackme 4

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