首页
社区
课程
招聘
[原创]新手第一次破解
发表于: 2010-1-27 17:27 15206

[原创]新手第一次破解

2010-1-27 17:27
15206
收藏
免费 7
支持
分享
最新回复 (89)
雪    币: 15
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
76
恭喜获得正式邀请码!!
2011-4-11 09:14
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
77
邀请码啊邀请码。。。我要加油啊~~
2011-4-11 16:08
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
78
新手能拿出破解案例,确实不错,还是先学学汇编再说。
2011-4-11 16:28
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
79
努力赚KX中。。。。。。。。。。
2011-4-11 16:29
0
雪    币: 365
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
80
楼主写的很简单哦,我也能写的出来,哈哈!
2011-4-11 17:20
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
81
这样都可以啊,我发的怎么不见给注册码啊?
2011-4-11 17:22
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
82
  受教了  谢谢LZ
2011-4-16 17:32
0
雪    币: 41
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
83
学习了~~谢谢``~
2011-4-25 15:45
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
84
看来楼主已经入门了,继续努力哦
2011-4-26 10:26
0
雪    币: 228
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
85
没事玩玩,od不很懂
2011-4-26 10:52
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
86
回帖赚钱才是王道~~谢谢楼主了~小菜学习了
2011-4-26 11:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
87
很久没来了  好像好多规则都变了啊
2011-4-26 11:51
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
88
这个很简单的了~
2011-4-26 13:18
0
雪    币: 508
活跃值: (202)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
89
0040EB72  |?  EC            IN AL,DX
0040EB73  |.  83C4 F4       ADD ESP,-0C
0040EB76  |.  53            PUSH EBX
0040EB77  |.  56            PUSH ESI
0040EB78  |.  894D F4       MOV DWORD PTR SS:[EBP-C],ECX
0040EB7B  |.  8955 F8       MOV DWORD PTR SS:[EBP-8],EDX
0040EB7E  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX             ;  EAX=009FED1C, (ASCII "wangwei")
0040EB81  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0040EB84  |.  E8 9746FFFF   CALL KeyGenMe.00403220
0040EB89  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0040EB8C  |.  E8 8F46FFFF   CALL KeyGenMe.00403220
0040EB91  |.  33C0          XOR EAX,EAX
0040EB93  |.  55            PUSH EBP
0040EB94  |.  68 36EC4000   PUSH KeyGenMe.0040EC36
0040EB99  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
0040EB9C  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
0040EB9F  |.  33DB          XOR EBX,EBX
0040EBA1  |.  33F6          XOR ESI,ESI
0040EBA3  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
0040EBA6  |.  E8 C144FFFF   CALL KeyGenMe.0040306C                   ;  相当 strlen()
0040EBAB  |.  85C0          TEST EAX,EAX
0040EBAD  |.  7E 13         JLE SHORT KeyGenMe.0040EBC2
0040EBAF  |.  BA 01000000   MOV EDX,1                                ;  -------------------------------|
0040EBB4  |>  8B4D FC       /MOV ECX,DWORD PTR SS:[EBP-4]            ;  ASCII "wangwei"
0040EBB7  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  逐位取用户名的字符
0040EBBC  |.  03D9          |ADD EBX,ECX                             ;  这个作用是把用户名的acsii进行自加
0040EBBE  |.  42            |INC EDX
0040EBBF  |.  48            |DEC EAX
0040EBC0  |.^ 75 F2         \JNZ SHORT KeyGenMe.0040EBB4             ;  --------------------------|
相当这些代码:
int ziadd(*s)
    {
      int sum=0;
      while ( *s !='\0')
             {
               sum = sum+*s;
             }
      ret
    }
0040EBC2  |>  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]
0040EBC5  |.  E8 A244FFFF   CALL KeyGenMe.0040306C                   ;  相当 strlen()
0040EBCA  |.  85C0          TEST EAX,EAX
0040EBCC  |.  7E 13         JLE SHORT KeyGenMe.0040EBE1
0040EBCE  |.  BA 01000000   MOV EDX,1
0040EBD3  |>  8B4D F8       /MOV ECX,DWORD PTR SS:[EBP-8]            ;  ------------------------------->
0040EBD6  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  把我们输入的假注册码进行自加
0040EBDB  |.  03F1          |ADD ESI,ECX
0040EBDD  |.  42            |INC EDX
0040EBDE  |.  48            |DEC EAX
0040EBDF  |.^ 75 F2         \JNZ SHORT KeyGenMe.0040EBD3             ;  <---------------------
0040EBE1  |>  81C3 00000920 ADD EBX,20090000                         ;  用户名自加的结果加上20090000
0040EBE7  |.  B8 01070920   MOV EAX,20090701                         ;  20090701
0040EBEC  |.  2BC6          SUB EAX,ESI                              ;  20090701-注册码自加的结果
0040EBEE  |.  3BD8          CMP EBX,EAX                              ;  在比较是否相同;一样就注册成功
0040EBF0  |.  75 1C         JNZ SHORT KeyGenMe.0040EC0E
0040EBF2  |.  68 4CEC4000   PUSH KeyGenMe.0040EC4C                   ;  Cool~
0040EBF7  |.  FF75 FC       PUSH DWORD PTR SS:[EBP-4]
0040EBFA  |.  68 5CEC4000   PUSH KeyGenMe.0040EC5C                   ;   Registered!
0040EBFF  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
0040EC02  |.  BA 03000000   MOV EDX,3
0040EC07  |.  E8 2045FFFF   CALL KeyGenMe.0040312C
0040EC0C  |.  EB 0D         JMP SHORT KeyGenMe.0040EC1B
0040EC0E  |>  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
0040EC11  |.  BA 74EC4000   MOV EDX,KeyGenMe.0040EC74                ;  No,Unregistered!Try Again!
0040EC16  |.  E8 4543FFFF   CALL KeyGenMe.00402F60
0040EC1B  |>  33C0          XOR EAX,EAX
0040EC1D  |.  5A            POP EDX
0040EC1E  |.  59            POP ECX
0040EC1F  |.  59            POP ECX
0040EC20  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
0040EC23  |.  68 3DEC4000   PUSH KeyGenMe.0040EC3D
0040EC28  |>  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
0040EC2B  |.  BA 02000000   MOV EDX,2
0040EC30  |.  E8 FB42FFFF   CALL KeyGenMe.00402F30
0040EC35  \.  C3            RETN
0040EC36   .^ E9 A53DFFFF   JMP KeyGenMe.004029E0
0040EC3B   .^ EB EB         JMP SHORT KeyGenMe.0040EC28
0040EC3D   .  5E            POP ESI
0040EC3E   .  5B            POP EBX
0040EC3F   .  8BE5          MOV ESP,EBP
0040EC41   .  5D            POP EBP
0040EC42   .  C3            RETN
总结一下吧:
1. 第一是用户名自加后加上0X20090000;
2. 我们输入注册码也进行自加;在用20090701减去自加的结果;
3. 把上两次的结果进行比较,相等就注册成功了.
可以说作者写的这个CH写不乍好。一个用户名可能有N多个注册码。因为只要符合自加结果的字符串都可以成为注册码。

#include <stdio.h>
int ziadd(char *s)
{
        int sum=0;
        while ( *s != '\0')
        {
                sum +=*s;
                s++;
        }
        return sum;
}
int main()
{
        char name[30];
        int key;
        int a,b=0X65;                            b的值大家可以自己给定;设的值不一样得到的注册码好不一样
        scanf("%s", &name);
        a = ziadd(name);
                key = 0X701-a;
        printf("%X\n",key);
        while ( key >= b)
        {
        
               
              key = key -b;
                   printf("%c", b);
               b++;
         }
                printf("%c", key);
        printf("\n");
}       

这个KEY它只是注册码自加的结果;只要字符串自加的结果=key都可以作为注册码用。
如我的用户名为wangwei
计算可以得到KEY = 0X40F;
只要字符串自加=0X40F都可以作为注册码。
我的用户名是:
wangwei
当B的值是0X65时我的注册码为:efghijklm^
当B的值是0X69时我的注册码为:ijklmnopq:
上传的附件:
2011-4-26 13:20
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
90
来膜拜下牛人~呵呵
2011-4-26 17:31
0
游客
登录 | 注册 方可回帖
返回
//