首先运行观察一下小程序
发现是一个很典型的crakeme小程序,接下来拖进OD
根据上面的尝试,有很明显的提示字符串,可以查找一下,下断。很容易定位到关键算法代码段
如上注释的一般,就是一个很简单的累计算法求和,以十进制保存。
跟踪到输出serial,检验判断的是否正确。
跟踪得到了"2185826717",检验一下
没毛病就是他!!!
最后献上C++写的注册机源代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char name[100];
cout<<"Enter your name: ";
cin>>name;
int len=strlen(name);
int fret=0x81276345;
for(int i=0;i<len;i++)
{
fret=((fret+name[i])^(i<<8))*(~(len*i)*(i+1));
}
printf("%d\n",fret);
return 0;
}
嗯,很简单的crakeme,但是对我一个新人来说很有意义。加油!!!