首页
社区
课程
招聘
[原创]解一cm (求邀请码)
发表于: 2010-10-3 09:13 4877

[原创]解一cm (求邀请码)

2010-10-3 09:13
4877
学习了这几天 我一直认为碰到的cm 一定得把 注册机写出来才能达到提高的效果,所以这次我又上一 cm 与大家学习。。。爆破很简单(关键是算法有点。。对于我这样的菜来说)斑主给码啊,期待中。。。
   软件:cm  无壳
   工具:od  peid
    注册机(c语言)
开始了 直接找 字符串:
   

往上走 就可以发现 可断处,例外还有 ,有意义的call

  

正式 的关于name 和company的处理(注意这里的表项,其实就是 它自己的一个table中一项(开始地址为0x4459df) 注册机中可以看到)


生成十六进制serial处:真正的就把它转为无符号 十进制数 理由:下面说~~

   
理由:


关键是注册机 由于汇编还没学几天 所以有些汇编中的循环移动指令,还真把我难到了,还有就是eax 中 not ax  不知道咋写,还好 可以一边写一边调试,终于弄出来了:
#include<stdio.h>
#include<string.h>
        unsigned int Table[127]={0x00,0x10,0x39 ,0x44 ,0x00 ,0x24 ,0x39 ,0x44 ,0x00,
                0x0C ,0xAF ,0x40 ,0x00 ,0x14 ,0xAF ,0x40 ,0x00 ,0x1C ,0xAF ,0x40 ,0x00 ,0x24 ,0xAF ,0x40 ,0x00,
                0x34 ,0xAF ,0x40 ,0x00 ,0x3C ,0xAF ,0x40 ,0x00 ,0x44 ,0xAF ,0x40 ,0x00 ,0x4C ,0xAF ,0x40 ,0x00,
                0x54 ,0xAF ,0x40 ,0x00 ,0x5C ,0xAF ,0x40 ,0x00 ,0x2C ,0xAF ,0x40 ,0x00 ,0x06 ,0x00 ,0x00 ,0x00,
                0x07 ,0x00 ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ,0x00 ,0x02 ,0x00 ,0x00 ,0x00 ,0x03 ,0x00 ,0x00 ,0x00,
                0x04 ,0x00 ,0x00 ,0x00 ,0x05 ,0x00 ,0x00 ,0x00 ,0x08 ,0x00 ,0x00 ,0x00 ,0x09 ,0x00 ,0x00 ,0x00,
                                0x0A ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x2C ,0x61 ,0x23 ,0x47 ,0x0E ,0x26 ,0x61 ,0x20,
                                0x31 ,0x49 ,0x36 ,0x24 ,0x2B ,0x42 ,0x31 ,0x63 ,0x0E ,0x29 ,0x5E ,0x30 ,0x4B ,0x38 ,0x2A ,0x33,
                                0x44 ,0x3D ,0x8B ,0xC0 ,0xAC ,0x6B };//注意为什么要取127项  ,因为 一般ascii 有8位组成,高位不                                                                        //用所以1字节 总共可以表示127个字符
void main()
{   
        char name[20]={0};
        char company[20]={0};
        int Lnam;
        int Lcom;
        unsigned long temp1,temp2,temp3,temp4,temp5; // 要够表示范围哦!
               printf("please input name(20 num):\n");
        scanf("%s",name);
        printf("please input company(20 num):\n");
        scanf("%s",company);
        Lnam=strlen(name);
        Lcom=strlen(company);
                temp1=(Table[name[0]]*Table[name[2]]*Table[company[Lcom-2]]   *Table [company[Lcom-1]]+Table[name[3]]*Table[company[2]])^0x28d8u;
                temp1=(temp1+0x288d4a7du)^0x9714u;
                temp2=(0x3039u>>26)|(0x3039u<<6);  //循环左移
                temp1=(temp1>>2)|(temp1<<30); // 循环移动
                temp1=temp1>>3;            
                temp1+=temp2;
                temp1=temp1+Table[name[3]]*Table[company[2]];
                temp1++;

               temp3=temp1&0xffff0000u;
               temp4=temp1&0x0000ffffu;
               temp4=~(temp4|0xffff0000u);  // 注意一下,很容易弄错哦!
               temp4|=temp3;
                temp4+=0x29Au;

printf("%lu",temp4);
  

}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 1149
活跃值: (1033)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
2
欢迎拍砖!!!
2010-10-3 09:24
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,学习中。。。
2010-10-3 11:01
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,学习中..........
2010-10-3 11:31
0
雪    币: 177
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
呵呵不错额。

我也在学习。
2010-10-3 16:21
0
雪    币: 189
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢楼主,拿来充一电先.
2010-10-4 12:47
0
雪    币: 120
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
学习了,好东西
2010-10-4 12:50
0
雪    币: 1149
活跃值: (1033)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
8
互相学习!!!
2010-10-4 12:53
0
游客
登录 | 注册 方可回帖
返回