首页
社区
课程
招聘
新手入门第二个注册机[原创]
2007-2-2 02:54 5810

新手入门第二个注册机[原创]

2007-2-2 02:54
5810
【文章标题】: 新手入门第二个注册机
【文章作者】: 笑熬浆糊
【作者邮箱】:  
【作者主页】:  
【作者QQ号】:  
【下载地址】: 附件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  0045004C  /.  55            push    ebp
  0045004D  |.  8BEC          mov     ebp, esp
  0045004F  |.  83C4 C8       add     esp, -38
  00450052  |.  33C9          xor     ecx, ecx
  00450054  |.  894D C8       mov     [local.14], ecx
  00450057  |.  894D CC       mov     [local.13], ecx
  0045005A  |.  894D F8       mov     [local.2], ecx
  0045005D  |.  894D F4       mov     [local.3], ecx
  00450060  |.  894D F0       mov     [local.4], ecx
  00450063  |.  894D EC       mov     [local.5], ecx
  00450066  |.  8955 D0       mov     [local.12], edx
  00450069  |.  8945 FC       mov     [local.1], eax
  0045006C  |.  33C0          xor     eax, eax
  0045006E  |.  55            push    ebp
  0045006F  |.  68 E3014500   push    004501E3
  00450074  |.  64:FF30       push    dword ptr fs:[eax]
  00450077  |.  64:8920       mov     dword ptr fs:[eax], esp
  0045007A  |.  8D45 F0       lea     eax, [local.4]
  0045007D  |.  BA F8014500   mov     edx, 004501F8                    ;  ~!@#$%^&*()_+|\=-/?.,><;:`     密码表
  00450082  |.  E8 213EFBFF   call    00403EA8
  00450087  |.  8D45 EC       lea     eax, [local.5]
  0045008A  |.  E8 813DFBFF   call    00403E10
  0045008F  |.  8D55 F8       lea     edx, [local.2]
  00450092  |.  8B45 FC       mov     eax, [local.1]
  00450095  |.  8B80 00030000 mov     eax, dword ptr [eax+300]
  0045009B  |.  E8 B8F2FDFF   call    0042F358
  004500A0  |.  8B45 F8       mov     eax, [local.2]                   ;  用户名
  004500A3  |.  E8 2840FBFF   call    004040D0                         ;  算用户名的长度
  004500A8  |.  8945 E8       mov     [local.6], eax                   ;  返回值放入 EAX
  004500AB  |.  837D E8 04    cmp     [local.6], 4
  004500AF  |.  0F8C 06010000 jl      004501BB                         ;  长度小于4直接OVER
  004500B5  |.  8D55 F4       lea     edx, [local.3]
  004500B8  |.  8B45 FC       mov     eax, [local.1]
  004500BB  |.  8B80 08030000 mov     eax, dword ptr [eax+308]
  004500C1  |.  E8 92F2FDFF   call    0042F358                         ;  取出 测试码
  004500C6  |.  8B45 F4       mov     eax, [local.3]                   ;  EAX=试练码
  004500C9  |.  E8 0240FBFF   call    004040D0
  004500CE  |.  8945 E4       mov     [local.7], eax
  004500D1  |.  837D E4 00    cmp     [local.7], 0
  004500D5  |.  0F84 E0000000 je      004501BB                         ;  注册码没输入就死
  004500DB  |.  8B45 E8       mov     eax, [local.6]                   ;  用户名长度给 EAX
  004500DE  |.  25 01000080   and     eax, 80000001
  004500E3  |.  79 05         jns     short 004500EA
  004500E5  |.  48            dec     eax
  004500E6  |.  83C8 FE       or      eax, FFFFFFFE
  004500E9  |.  40            inc     eax
  004500EA  |>  85C0          test    eax, eax
  004500EC  |.  74 0D         je      short 004500FB
  004500EE  |.  8D45 F8       lea     eax, [local.2]
  004500F1  |.  BA 1C024500   mov     edx, 0045021C                    ;  长度不是双数,补一个*
  004500F6  |.  E8 DD3FFBFF   call    004040D8
  004500FB  |>  8B45 F8       mov     eax, [local.2]                   ;  用户名
  004500FE  |.  E8 CD3FFBFF   call    004040D0
  00450103  |.  8945 E8       mov     [local.6], eax
  00450106  |.  8B45 E8       mov     eax, [local.6]                   ;  用户名长度
  00450109  |.  D1E8          shr     eax, 1                           ;  右移两位
  0045010B  |.  8945 D8       mov     [local.10], eax                  ;  Local.10 就是循环的总次数了
  0045010E  |.  8B45 D8       mov     eax, [local.10]
  00450111  |.  85C0          test    eax, eax
  00450113  |.  0F8E 82000000 jle     0045019B
  00450119  |.  8945 D4       mov     [local.11], eax
  0045011C  |.  C745 E0 01000>mov     [local.8], 1                     ;  当前要取用户名的第几位
  00450123  |>  33C0          /xor     eax, eax
  00450125  |.  8945 DC       |mov     [local.9], eax
  00450128  |.  8B45 F8       |mov     eax, [local.2]                  ;  用户名
  0045012B  |.  8B55 E0       |mov     edx, [local.8]
  0045012E  |.  0FB64410 FF   |movzx   eax, byte ptr [eax+edx-1]       ;  取用户名的第一位
  00450133  |.  C1E0 02       |shl     eax, 2                          ;  左移两位
  00450136  |.  B9 1A000000   |mov     ecx, 1A                         ;  放入 除数
  0045013B  |.  33D2          |xor     edx, edx
  0045013D  |.  F7F1          |div     ecx
  0045013F  |.  8955 DC       |mov     [local.9], edx                  ;  余数
  00450142  |.  8D45 CC       |lea     eax, [local.13]
  00450145  |.  8B55 F0       |mov     edx, [local.4]
  00450148  |.  8B4D DC       |mov     ecx, [local.9]
  0045014B  |.  8A140A        |mov     dl, byte ptr [edx+ecx]          ;  用余数来查密码表
  0045014E  |.  E8 A53EFBFF   |call    00403FF8
  00450153  |.  8B55 CC       |mov     edx, [local.13]
  00450156  |.  8D45 EC       |lea     eax, [local.5]
  00450159  |.  E8 7A3FFBFF   |call    004040D8
  0045015E  |.  8B45 F8       |mov     eax, [local.2]                  ;  用户名
  00450161  |.  8B55 E0       |mov     edx, [local.8]                  ;  当前要取用户名的第几位
  00450164  |.  0FB60410      |movzx   eax, byte ptr [eax+edx]         ;  注意,上面的有 -1 这里没有
  00450168  |.  8D0440        |lea     eax, dword ptr [eax+eax*2]      ;  *3
  0045016B  |.  B9 1A000000   |mov     ecx, 1A
  00450170  |.  33D2          |xor     edx, edx
  00450172  |.  F7F1          |div     ecx
  00450174  |.  8955 DC       |mov     [local.9], edx                  ;  余数
  00450177  |.  8D45 C8       |lea     eax, [local.14]
  0045017A  |.  8B55 F0       |mov     edx, [local.4]
  0045017D  |.  8B4D DC       |mov     ecx, [local.9]
  00450180  |.  8A140A        |mov     dl, byte ptr [edx+ecx]          ;  用余数来查密码表
  00450183  |.  E8 703EFBFF   |call    00403FF8
  00450188  |.  8B55 C8       |mov     edx, [local.14]
  0045018B  |.  8D45 EC       |lea     eax, [local.5]
  0045018E  |.  E8 453FFBFF   |call    004040D8
  00450193  |.  FF45 E0       |inc     [local.8]                       ;  要处理的位置加1
  00450196  |.  FF4D D4       |dec     [local.11]                      ;  循环次数减1
  00450199  |.^ 75 88         \jnz     short 00450123
  0045019B  |>  8B45 EC       mov     eax, [local.5]                   ;  注册码
  0045019E  |.  8B55 F4       mov     edx, [local.3]                   ;  试练码
  004501A1  |.  E8 7640FBFF   call    0040421C
  004501A6  |.  75 13         jnz     short 004501BB                   ;  爆破点
  004501A8  |.  6A 40         push    40                               ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
  004501AA  |.  68 20024500   push    00450220                         ; |congratulationsgood job,man!
  004501AF  |.  68 30024500   push    00450230                         ; |good job,man!
  004501B4  |.  6A 00         push    0                                ; |hOwner = NULL
  004501B6  |.  E8 E562FBFF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
  
  
  
  
  注册算法    代码很不规范,将就看吧~~
  function GetKey(uid:String):string;
  const   Keytable='~!@#$%^&*()_+|\=-/?.,><;:`';    //定义密码表
  var
    i:Integer;                           
    B:DWORD;
    Key:string;
    YUSU:DWORD;
    len:Byte;
  
  begin
    Key:='';
    i:=1;
    b:=0;
    KEY:='';
    YUSU:=0;
    len:=(Length(uid));
    if (len mod 2) <>0 then                  //不是双数就补位
      begin
         uid:=uid+'*';
         len:=len+1;
        end;
    while i<= (len div 2) do
      begin
               b:=Ord(uid[i]);
               b:=b shl  2;
               YUSU:=b mod $1A ;
               KEY:=KEY+Keytable[YUSU+1];     //DELPHI 的字符串是从 1 开始的 所以要加1
               b:=Ord(uid[i+1]);              //道理同上
               b:=b*3;
               YUSU:=b mod $1A;
               KEY:=KEY+Keytable[YUSU+1];
               Inc(i);
        end;
    Result:=Key;     
  end;
  
  
  
  
--------------------------------------------------------------------------------
【经验总结】
  比较容易的算法,简单的查表,适合我等新手练习啊~~哇哈哈~~
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2007年02月02日 2:53:29

[培训]科锐软件逆向50期预科班报名即将截止,速来!!! 50期正式班报名火爆招生中!!!

上传的附件:
收藏
免费 7
打赏
分享
最新回复 (8)
雪    币: 269
活跃值: (46)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
yunfeng 1 2007-2-2 06:34
2
0
发错地方了吧!应该放到CrackMe去.
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whjh 2007-2-2 11:22
3
0
楼上:这里不就是『CrackMe & ReverseMe』 吗?
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 66 2007-2-2 11:55
4
0
最初由 whjh 发布
楼上:这里不就是『CrackMe & ReverseMe』 吗?


这张帖是有版主从调试版转过来的
雪    币: 523
活跃值: (827)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
笑熬浆糊 2 2007-2-2 14:21
5
0
下次一定注意~~~~
雪    币: 4441
活跃值: (805)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
windtrace 2007-2-3 11:09
6
0
555 有没有这个的破解教程,我都断不下来
雪    币: 523
活跃值: (827)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
笑熬浆糊 2 2007-2-3 11:53
7
0
回楼上~~可以直接查 字符 good job,man  双击后就来到爆破点的正下方~~~
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
随风的云 2007-2-23 07:52
8
0
学习了,支持
雪    币: 215
活跃值: (82)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
dthexin 1 2007-2-23 17:18
9
0
学习一下,
游客
登录 | 注册 方可回帖
返回