Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

blacksalamander

Easy_Keygen 본문

Reversing.kr

Easy_Keygen

검은도롱뇽 2019. 2. 7. 19:46

먼저 프로그램을 실행시켜본다.

 

 

아무 값이나 넣었을 때 틀렸다는 것을 볼 수 있다.

 

ReadMe.txt 을 읽어보면 Serial 이 5B134977135E7D13 일 때 Name 값을 찾으라고 쓰여있다.

 

이제 Name 값을 찾아보자.

 

OllyDbg 프로그램을 실행시킨 후 EasyKeygen 파일을 연다.

문자열에서 우리가 접근할 수 있는 데이터를 확인해본다.

 

 

Text string 을 보면 아까 오답을 넣었을 때 출력된 문자열(Wrong)이 보인다.

더블클릭하여 들어가 보자.

 

 

이 부분을 포함하는 함수의 첫 부분으로 가본다.

 

 

이제 프로그램의 흐름을 파악해보자.

계속 실행하다 보면 프로그램 창에서 Input Name 을 입력받는다.

 

 

Name 에  abcdefghij 을 입력했다.

 

 

값이 0x0019FE18 주소에 저장되었다.

 

 

MOVSX ECX, BYTE PTR SS:[ESP+ESI+C] 는 0x0019FE08 + 0x0 + 0xC = 0x0019FE14 의 바이트 값을 ECX 에 넣으라는 뜻으로

0x0019FE14 에는 10 값이 있으므로 ECX 에 0x00000010 값이 들어간다.

MOVSX EDX, BYTE PTR SS:[ESP+EBP+10] 는 0x0019FE08 + 0x0 + 0x10 = 0x0019FE18 의 바이트 값을 EDX 에 넣으라는 뜻으로

0x0019FE18 에는 a(ASCII : 0x61) 값이 있으므로 EDX 에 0x00000061 값이 들어간다.

 

 

XOR ECX, EDX 은 0x00000010 ^ 0x00000061 = 0x00000071 값을 ECX 에 넣는다.

 

 

0x0019FE7C 에 71 값이 들어간다.

 

계속 실행을 하다 보면 이 구간이 반복된다.

 

 

반복문의 두 번째를 실행해본다.

 

 

MOVSX ECX, BYTE PTR SS:[ESP+ESI+C] 는 0x0019FE08 + 0x1 + 0xC = 0x0019FE15 의 바이트 값을 ECX 에 넣으라는 뜻으로

0x0019FE15 에는 20 값이 있으므로 ECX 에 0x00000020 값이 들어간다.

MOVSX EDX, BYTE PTR SS:[ESP+EBP+10] 는 0x0019FE08 + 0x1 + 0x10 = 0x0019FE19 의 바이트 값을 EDX 에 넣으라는 뜻으로

0x0019FE19 에는 b(ASCII : 0x62) 값이 있으므로 EDX 에 0x00000062 값이 들어간다.

 

 

XOR ECX, EDX 은 0x00000020 ^ 0x00000062 = 0x00000042 값을 ECX 에 넣는다.

 

 

0x19FE7E 에 42 값이 들어갔다.

 

반복문의 세 번째를 실행해본다.

 

 

MOVSX ECX, BYTE PTR SS:[ESP+ESI+C] 는 0x0019FE08 + 0x2 + 0xC = 0x0019FE16 의 바이트 값을 ECX 에 넣으라는 뜻으로

0x0019FE16 에는 30 값이 있으므로 ECX 에 0x00000030 값이 들어간다.

MOVSX EDX, BYTE PTR SS:[ESP+EBP+10] 는 0x0019FE08 + 0x2 + 0x10 = 0x0019FE1A 의 바이트 값을 EDX 에 넣으라는 뜻으로

0x0019FE1A 에는 c(ASCII : 0x63) 값이 있으므로 EDX 에 0x00000063 값이 들어간다.

 

 

XOR ECX, EDX 은 0x00000030 ^ 0x00000063 = 0x00000053 값을 ECX 에 넣는다.

 

 

0x19FE80 에 53 값이 들어갔다.

 

계속 실행하면 ESI 은 0, 1, 2 값을 반복하고 EBP 은 계속 증가하는 것을 알 수 있다.

 

 

CMP EBP, ECX 에서 0xA, 0xA 서로 값이 같으므로 반복문을 빠져나온다.

 

Name(abcdefghij) 의 Serial(7142537445567748597A) 값을 알아냈다.

 

 

 

프로그램을 다 실행한 결과 Correct 을 출력했다.

 

정리하면,

a / b / c / d / e / f / g / h / i / j = 0x61 / 0x62 / 0x63 / 0x64 / 0x65 / 0x66 / 0x67 / 0x68 / 0x69 / 0x6A

 

   0x61 / 0x62 / 0x63 / 0x64 / 0x65 / 0x66 / 0x67 / 0x68 / 0x69 / 0x6A

^ 0x10 / 0x20 / 0x30 / 0x10 / 0x20 / 0x30 / 0x10 / 0x20 / 0x30 / 0x10

----------------------------------------------------------------------------------------

   0x71 / 0x42 / 0x53 / 0x74 / 0x45 / 0x56 / 0x77 / 0x48 / 0x59 / 0x7A

 

이란 것을 알 수 있다.

 

즉, Serial 값 5B134977135E7D13 은

 

   0x5B / 0x13 / 0x49 / 0x77 / 0x13 / 0x5E / 0x7D / 0x13

^ 0x10 / 0x20 / 0x30 / 0x10 / 0x20 / 0x30 / 0x10 / 0x20

-----------------------------------------------------------------------

   0x4B/ 0x33 / 0x79 / 0x67 / 0x33 / 0x6E / 0x6D / 0x33 (= K / 3 / y / g / 3 / n / m / 3)

 

K3yg3nm3 인 것을 알 수 있다.

 

 

값 : K3yg3nm3

'Reversing.kr' 카테고리의 다른 글

Easy_CrackMe  (0) 2019.01.26