본문 바로가기

Wargame/Reversing-W

reversing kr Easy Keygen

zip파일을 받아서 압축을 풀면 사진과 같은 두 파일이 들어있다.



ReadMe.txt부터 읽어보면

시리얼이 5B134977135E7D13 일때의 이름을 찾으라고한다.



일단 실행해서 Name에 p3ngdump, Serial에 1234를 넣어줘봤다.

틀렸다고한다.



올리디버거로 던져서 메인부분으로 들어와보면

왼쪽 밑 부분에 Wrong, Correct 등등의 문자열이 보인다.

저 곳으로 넘어가서 함수를 분석해보자.



스트링 검색으로 Correct 부분의 함수를 찾았다.

그 곳으로 넘어가보자.



함수의 시작부이다.

이름을 입력받는다. 딱히 다른일은 하지 않는다.



이름을 입력받고 나서 그 이름으로 무슨 연산을 계속 한다.

xor을 해주고, or을 해주고.. 

분석해보자면, 이름의 첫 문자부터 끝 문자까지 ecx의 값과 xor을 해준다.

문제는 ecx는 10씩 증가하는데, 30이 되면 다시 10으로 바꿔준다.

즉, ecx는 10 20 30 10 20 30 10 이런식으로 변환된다.


그리고 시리얼을 입력받은뒤에 비교문을 계속 거치고 점프 분기문으로

Wrong 과 Correct 문 둘 중 하나로 점프한다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= [0x5b0x130x490x770x130x5e0x7d0x13]
= [0x100x200x30]
 
= 0
for i in range(0,8):
        a[i] ^= b[j]
        j = j + 1
        if(j == 3):
                j = 0
 
for i in range(0,8):
        a[i] = chr(a[i])
 
print a
 
cs

위의 Name부분의 알고리즘을토대로 간단하게 코드를 짰다.

실행하면 성공적으로 문자가 나온다. 이걸 입력해보자.






반응형

'Wargame > Reversing-W' 카테고리의 다른 글

reversing kr Replace  (0) 2017.07.11
reversing kr Music Player  (0) 2017.07.10
reversing kr Easy ELF  (0) 2017.07.10
reversing kr Easy Unpack  (0) 2017.07.10
reversing kr Easy Crack  (0) 2017.07.10