본문 바로가기

Wargame/Reversing.kr

[Reversing.kr] Easy Keygen

Serial 값이 5B134977135E7D13인 Name 을 찾는 문제이다.

 

 

파일을 실행하니 저런 식으로 Name과 Serial을 입력받길래 아무렇게나 쳐봤는데 답이 아니라 그런지 그냥 꺼졌다.

이번 문제는 Ollydbg 로 풀어볼까 한다. x32로 여는거더라.

 

Ctrl + g 로 401000 main 함수를 검색한다.

 

마지막 세줄이 좀 특이하다.

 

0x10, 0x20, 0x30 을 각각 esp+10, esp+11, esp+12 에 저장하는걸 볼 수 있다.

 

위의 루프에서 name 과 xor 키 연산을 통해 serial num 을 생성하는 것을 볼 수 있다.

 

위의 부분에서 serial num을 계산하는데,

[esp+esi+c] 에는 0x10,

[esp+ebp+10] 에는 입력한 name의 첫 글자,

[esp+74] 에는 위의 두 값을 xor 한 값을 저장한다.

 

xor 연산을 하는 부분이다.

 

이렇게 입력받은 name의 한 바이트씩을 0x10, 0x20, 0x30과 xor 연산을 수행해 serial num을 구하는데, 5B134977135E7D13이 나오도록 name을 역연산하면 된다.

 

serial num = 5B134977135E7D13

xor key = 1020301020301020

쉽게 말해서 serial num ^ xor key 를 구하면 된단 말이다.

 

두개씩 잘라서 xor하도록 파이썬으로 코딩하였다.

 

serial="5B134977135E7D13"
name=""
i=(0x10, 0x20, 0x30)
for j in range(0,len(serial)>>1):
    name+=chr(int(serial[j*2:j*2+2],16)^i[j%3])

 

K3yg3nm3

 

된건지 모르겠지만 원래는 그냥 종료되고 검은 화면이 나왔는데 다시 input name 창이 떴다는 차이가 있었다.

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

[Reversing.kr] Replace  (0) 2023.05.28
[Reversing.kr] Easy ELF  (0) 2023.05.28
[Reversing.kr] Easy Unpack  (0) 2023.05.28
[Reversing.kr] Easy Crack  (0) 2023.05.28