CRoot 发表于 2016-4-4 23:14

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:52

本帖最后由 CRoot 于 2016-4-10 10:53 编辑

Sound 发表于 2016-4-9 23:51
文章简直太简洁。
我看到已经有不少大牛分析的差不多了 只是补充了一些内容所以有点简洁了2333

CRoot 发表于 2016-6-7 09:45

chris521crystal 发表于 2016-6-2 22:56
如何学习啊

从第一个开始做就是了 不会的想办法学会

别人都叫我老木 发表于 2016-4-4 23:33

直接看懵逼了,算法?   

mapleray 发表于 2016-4-4 23:37

这是什么。。。

blackjuly 发表于 2016-4-5 00:56

表示C语言学的并不是很好,C写的算法看的好晕啊。。。。。

爱自由 发表于 2016-4-5 08:21

学习了,感谢

机器猫 发表于 2016-4-5 10:23

多谢楼主分享,学习啦!{:301_993:}

whyida 发表于 2016-4-5 12:30

差一行 #include <string.h>

CRoot 发表于 2016-4-5 18:07

whyida 发表于 2016-4-5 12:30
差一行 #include

呃 VS2013没报错-- 默认可能自动加载了--

zdfs530 发表于 2016-4-5 19:03

看看,学习了!

zdfs520 发表于 2016-4-9 11:21

页: [1] 2
查看完整版本: 160个CrackMe 之 6 C语言实现注册机(加入UDD,含算法分析注释)