题目:Crackme2.exe
Rules:
1. Do not Patch
2. Sniff a serial for your name
3. write a keygen
1.可以通过修改跳转语句或者判断语句的16进制实现.
2.用OD进行动态调试
在如图的地方设置断点,然后F8单步运行,经过几次循环后,进行比较.这时可以查看ecx可以看到里面时存储的是生成的密钥. 如图所示
3.通过对ida反编译后的代码分析
分析后得到如下程序
#include<iostream>
using namespace std;
int main(){
int v5[100];
char i[100],v6[20];
double v3;
memset((char *)&v5 + 1, 0, 0xFEu);
v3 = (long double)(-880 * (554445 * strlen(i) / 0x64));
sprintf(v6, "%i-x019871", v3, 0, 1, v3, v5);
cout<<v6<<endl;
system("pause");
return 0;
}