본문 바로가기

리버싱!

reversing.kr-Easy_Keygen

이름을 입력하여 이름을 가지고 시리얼을 만드는 간단한 문제이다.

IDA와 ollydbg를 보면 알 수 있듯이 for문 로직에서 나온 시리얼 값인 5B134977135E7D13을 이용해 구해주면 된다.

 

#include<iostream>
#include <sstream>
#include<string>
#include<vector>
using namespace std;

int main() {
	string serial = "5B 13 49 77 13 5E 7D 13";
	vector<string> nam;
	string nam2;
	istringstream iss(serial);

	string str;
	while (iss >> str) {
		nam.push_back(str);
	}
	
	int j=1;
	for (int i = 0; i < 8; i++) {
		if (j >3)
			j = 1;
		nam2 = nam[i];
		char nam = stoi(nam2, NULL, 16) ^ (16*j);
		cout << nam ;
		j++;
	}
}

이름의 한문자씩 추출하여 의 숫자들로 xor을 하게된다.

16 32 48의 값들과 XOR을 순서대로 하나씩 한다.(ESP+ESI+0xC->16 32 48) 부분이다. (ESI가 코드의 j)

XOR암호화는 XOR을 동일하게 한번 더 하면 원본이 나오게 되므로 KEY값을 구하면된다.

 

K3yg3nm3

'리버싱!' 카테고리의 다른 글

방독면책-어셈블리2  (0) 2020.01.06
방독면책-어셈블리  (0) 2020.01.06
google ctf-malvertising  (0) 2019.11.25
reversing.kr-Easy Crack  (0) 2019.07.03
codegate2019-the matrix  (0) 2019.02.01