리버싱!
reversing.kr-Easy_Keygen
남행이
2019. 7. 17. 16:02
이름을 입력하여 이름을 가지고 시리얼을 만드는 간단한 문제이다.
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