160个CrackMe 之 6 C语言实现注册机(加入UDD,含算法分析注释)
本帖最后由 CRoot 于 2016-4-8 11:33 编辑Cancella按钮算法是根据Nome算出code的
#include <stdio.h>
int whatfuck(int v1)//原来是他妹的阶乘,这个函数当初分析被坑坏了
{
if(v1 >= 2)
{
return v1*whatfuck(v1-1);
}
else
return 1;
}
int main()
{
int a1 = 0;
char Nome[] = "xxxx"; // 长度必须大于5
int nLen = strlen(Nome);
int a5 = Nome;
a5 = (a5 % 7) + 2;
a1 = a5;
int wt = whatfuck(a1); //esi
printf("%d\n",wt);
int nRet = 0;// ebx
int i;
for(i=1;i<=nLen;i++)
{
nRet += Nome * wt;
}
nRet -= 31337;
printf("Int:%d\n",nRet);
return 0;
}
对于OK,是根据code算nome,一开始我死活算不对,弄成nome算nome了 醉了。
#include <stdio.h>
int main()
{
char code[] = "xxx"; // eax
int nLen = strlen(code); // esi
int a2 = 0;// eax
for( int i=0;i<nLen;i++)
{
int a1 = code*code*(nLen-i);
a2 = a1 % 0x19 + 0x41;
code = a2;
}
printf("Nome:%s",code);
return 0;
}
白天补上OD的udd。
已补
本帖最后由 CRoot 于 2016-4-10 10:53 编辑
Sound 发表于 2016-4-9 23:51
文章简直太简洁。
我看到已经有不少大牛分析的差不多了 只是补充了一些内容所以有点简洁了2333 chris521crystal 发表于 2016-6-2 22:56
如何学习啊
从第一个开始做就是了 不会的想办法学会 直接看懵逼了,算法? 这是什么。。。 表示C语言学的并不是很好,C写的算法看的好晕啊。。。。。 学习了,感谢 多谢楼主分享,学习啦!{:301_993:} 差一行 #include <string.h> whyida 发表于 2016-4-5 12:30
差一行 #include
呃 VS2013没报错-- 默认可能自动加载了-- 看看,学习了!
页:
[1]
2