본문 바로가기

해킹, 보안/리버싱

[Immunity Debugger] reversing.kr 2번 Easy Keygen 문제 풀이

 

2020/07/20 - [해킹, 보안/리버싱] - [Immunity Debugger] reversing.kr 1번 Easy Crack 문제 풀이

 

[Immunity Debugger] reversing.kr 1번 Easy Crack 문제 풀이

프로그램의 비밀번호를 맞추는 문제이다. Immunity Debugger를 통해 동적으로 분석하였다. Immunity Debugger에서 EasyCrack.exe를 열어준다. 마우스 오른쪽 클릭 -> Search for -> All referenced text strings..

chanin-diary.tistory.com


이전에 1번을 풀었으니 이제 2번을 풀 차례이다.

 

ReversingKr KeygenMe

Find the Name when the Serial is 5B134977135E7D13

ReadMe.txt의 내용이다

Serial이 5B134977135E7D13 일 때의 이름을 찾으라고 한다.

 

Immunity Debugger 오픈

 

메인함수 진입

 

수상한 부분 포착!

반복문에서 10 20 30을 ecx에 순서대로 넣고,

입력받은 문자열을 edx에 넣은 다음ecx와 edx를 xor연산 후 나온 값을 push 한다.

esp + 74위치에는 이전에 연산된 값이 존재한다.

 

다음은 입력받은 시리얼과 생성된 시리얼을 레지스터에 넣고 비교하는 구문이다.

입력받은 시리얼 : esp + 10

생성된 시리얼 : esp + 74

 

대충 시리얼이 생성되는 알고리즘을 알았으니 코드를 짜 보자.

#include <stdio.h>

void main() {
	char tmp[128] = { "", };
	int serial[8] = { 0x5B,0x13,0x49,0x77,0x13,0x5E,0x7D,0x13 };
	int n[3] = { 0x10,0x20,0x30 };

	for (int i = 0, j = 0; i < sizeof(serial) / sizeof(int); i++, j++)
	{
		if (j > 2)
			j = 0;

		tmp[i] = serial[i] ^ n[j];
	}
	printf(tmp);
}

 

출력

 

Easy Kegen.exe에서 확인해보자

정답!!

 

정답 :  k3yg3nm3