2023 리버싱

[Reversing.kr] easy keygen

의성마늘햄 2023. 5. 28. 01:23

 

 

실행파일에서는 Input Name, Input Serial을 입력받고 이를 CMP해서 Wrong 나 Correct이라는 메시지를 출력한다!!

 

 

입력 받은 문자열을 가져와서 하나씩 0x10, 0x20, 0x30과 차례로 XOR 연산을 진행하고 있다.

 

[ESP+ESI+C] 안에 있는 값을 갖고오고, [ESP+EBP+10]의 값을 가져온다

 

 


[ESP+ESI+C]에 0x10, [ESP+EBP+10]에는 사용자가 입력한 첫번째 값이 들어온다.

 

 

 

 

이제 그 둘을 xor 해준다~~~!!!!

 

그리고 ESI에 생성한 시리얼값을 저장하고, 입력받은 시리얼값과 비교해서 일치할 경우 "Correct!"를, 아니면 "Wrong"을 띄우는 곳으로 jmp한다.
 


 

 

플래그값을 얻어내기 위해, c 코드를 작성해보았다.

 

#include <stdio.h>

int main() {
	char name[] = { 0x5B, 0x13, 0x49, 0x77, 0x13, 0x5E, 0x7D, 0x13 };
	int x[] = { 0x10, 0x20, 0x30 };
	int j = 0;
	for (int i = 0; i < 8; i++) {
		printf("%c", name[i] ^ x[j]);
		j++;
		i++;
		printf("%c", name[i] ^ x[j]);
		j++;
		i++;
		printf("%c", name[i] ^ x[j]);
		j = 0;
	}
	printf("\n");
}


 

 

K3yg3nm3