-
-
[原创]适合新手破解的160个crackme No.34分析
-
发表于:
2015-5-12 14:31
8883
-
[原创]适合新手破解的160个crackme No.34分析
纯纯的新手,勿喷 ==!
这是一个keyfile保护的crackme,首先od载入,f9到用户领空,
既然是keyfile,肯定需要读文件,好吧,映入眼帘的就是打开文件(CRACKME.KEY),读取数据,假设存储在 pwd[18]里面,其他的略过不细说,截图上都有注释
接下来就是重点内容,来到计算注册码的地方(图中标示关键call的地方),F7进入,这里就是计算注册码的地方
将字符串前14个字节分别与41h...4Dh进行异或操作,同时结果累加 得到一个和(记为total),循环中有个地方需要注意 如果pwd[i] == 41h+i,跳出循环,出来后,将total与12345678h异或,得到的就是最终的注册码 total ^= 12345678h
接下里取得pwd的后四位, 比较total的值与pwd的后四位是否相同
分析完毕,紧张呀, 文笔太差, 下面是注册机源码
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string name = "";
std::cout << "input your name: ";
cin >> name;
char pwd[18] = { 0 };
memcpy(pwd, name.c_str(), name.length() > 14 ? 14 : name.length());
int total = 0;
for (int i = 0; i < 14; i++)
{
total += pwd[i];
pwd[i] ^= 0x41 + i;
if (pwd[i] == 0)
break;
}
total ^= 0x12345678;
*(int*)(pwd + 14) = total;
ofstream file("CRACKME3.KEY");
file << string(pwd, 18);
return 0;
}
crackme文件:
crackme.zip
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)