• 标 题:豪情唐诗大全 v1.0 注册算法
  • 作 者:hailduz
  • 时 间:2003-9-03 周三, 下午11:08
  • 链 接:http://bbs.pediy.com

豪情唐诗大全 v1.0  注册算法
作者:HaIlDuZ [CcG]
软件名称:豪情唐诗大全 v1.0 
整理日期:2003.9.2
软件授权:共享软件
加密方式:注册码
研究难度:明码比较,难度易。
使用工具:OllDbG;W32Dasm 10.0
作者申明:纯技术交流,无任何商业目的,转贴请保持完整。

评    价:该软件不错,那天忽然想起“野径云俱黑,江船火独明。”忘了作者了一查找到。

开始:注册要求输入一个mail地址(最后看来无所谓一组字符即可),和注册码。
算法分析:
输入找到关键call后。分析过程如下:

/////////////////////////////////////////////////////////////////////
* Possible StringData Ref from Code Obj ->"body"
                                  |
:0054503E BAD4515400              mov edx, 005451D4
:00545043 8B86FC020000            mov eaxdword ptr [esi+000002FC]
:00545049 E87609F5FF              call 004959C4
:0054504E 8D55F0                  lea edxdword ptr [ebp-10]
:00545051 8B08                    mov ecxdword ptr [eax]
:00545053 FF5160                  call [ecx+60]
:00545056 8B45F0                  mov eaxdword ptr [ebp-10]
:00545059 50                      push eax
:0054505A 8D55EC                  lea edxdword ptr [ebp-14]
:0054505D A110885400              mov eaxdword ptr [00548810]
:00545062 8B00                    mov eaxdword ptr [eax]
:00545064 8B8018030000            mov eaxdword ptr [eax+00000318]
:0054506A E8E501F0FF              call 00445254
:0054506F 8B55EC                  mov edxdword ptr [ebp-14]  //15位机器码。 
:00545072 8BC6                    mov eaxesi     
:00545074 59                      pop ecx                //输入mail          
:00545075 E8CAFAFFFF              call 00544B44          //关键call 跟进见下面关键 call分析
:0054507A BAE4515400              mov edx, 005451E4
:0054507F 8B86FC020000            mov eaxdword ptr [esi+000002FC]
:00545085 E83A09F5FF              call 004959C4
:0054508A 8D55E8                  lea edxdword ptr [ebp-18]
:0054508D 8B08                    mov ecxdword ptr [eax]
:0054508F FF5160                  call [ecx+60]
:00545092 8B55E8                  mov edxdword ptr [ebp-18]
:00545095 8B45FC                  mov eaxdword ptr [ebp-04]
:00545098 E893FAEBFF              call 00404B30
:0054509D 7559                    jne 005450F8
:0054509F BAE4515400              mov edx, 005451E4
:005450A4 8B86FC020000            mov eaxdword ptr [esi+000002FC]
:005450AA E81509F5FF              call 004959C4
:005450AF 8D55E4                  lea edxdword ptr [ebp-1C]
:005450B2 8B08                    mov ecxdword ptr [eax]
:005450B4 FF5160                  call [ecx+60]
:005450B7 8B55E4                  mov edxdword ptr [ebp-1C]
:005450BA A110885400              mov eaxdword ptr [00548810]
:005450BF 8B00                    mov eaxdword ptr [eax]
:005450C1 8B801C030000            mov eaxdword ptr [eax+0000031C]
:005450C7 E8B801F0FF              call 00445284
:005450CC A110885400              mov eaxdword ptr [00548810]
:005450D1 8B00                    mov eaxdword ptr [eax]
:005450D3 8B8014030000            mov eaxdword ptr [eax+00000314]
:005450D9 33D2                    xor edxedx
:005450DB E89400F0FF              call 00445174
:005450E0 A110885400              mov eaxdword ptr [00548810]
:005450E5 8B00                    mov eaxdword ptr [eax]
:005450E7 8B8000030000            mov eaxdword ptr [eax+00000300]
:005450ED 33D2                    xor edxedx
:005450EF E88000F0FF              call 00445174
:005450F4 B301                    mov bl, 01
:005450F6 EB52                    jmp 0054514A


///////////////////////////////关键call分析///////////////////////////////////////
* Referenced by a CALL at Address:
|:00545075   
|
:00544B44 55                      push ebp
:00544B45 8BEC                    mov ebpesp
:00544B47 81C4D0FDFFFF            add esp, FFFFFDD0
:00544B4D 53                      push ebx
:00544B4E 56                      push esi
:00544B4F 33DB                    xor ebxebx
:00544B51 899DD4FEFFFF            mov dword ptr [ebp+FFFFFED4], ebx
:00544B57 899DD0FEFFFF            mov dword ptr [ebp+FFFFFED0], ebx
:00544B5D 899DD8FEFFFF            mov dword ptr [ebp+FFFFFED8], ebx
:00544B63 899DE0FEFFFF            mov dword ptr [ebp+FFFFFEE0], ebx
:00544B69 899DDCFEFFFF            mov dword ptr [ebp+FFFFFEDC], ebx
:00544B6F 899DE8FEFFFF            mov dword ptr [ebp+FFFFFEE8], ebx
:00544B75 899DE4FEFFFF            mov dword ptr [ebp+FFFFFEE4], ebx
:00544B7B 895DF0                  mov dword ptr [ebp-10], ebx
:00544B7E 894DF8                  mov dword ptr [ebp-08], ecx
:00544B81 8955FC                  mov dword ptr [ebp-04], edx
:00544B84 8B45FC                  mov eaxdword ptr [ebp-04]
:00544B87 E84800ECFF              call 00404BD4
:00544B8C 8B45F8                  mov eaxdword ptr [ebp-08]
:00544B8F E84000ECFF              call 00404BD4
:00544B94 33C0                    xor eaxeax
:00544B96 55                      push ebp
:00544B97 682C4E5400              push 00544E2C
:00544B9C 64FF30                  push dword ptr fs:[eax]
:00544B9F 648920                  mov dword ptr fs:[eax], esp
:00544BA2 8D45F0                  lea eaxdword ptr [ebp-10]
:00544BA5 8B55F8                  mov edxdword ptr [ebp-08]
:00544BA8 E81FFCEBFF              call 004047CC
:00544BAD 8D85EFFEFFFF            lea eaxdword ptr [ebp+FFFFFEEF]
:00544BB3 8B55FC                  mov edxdword ptr [ebp-04]
:00544BB6 B9FF000000              mov ecx, 000000FF
:00544BBB E808FEEBFF              call 004049C8
:00544BC0 B301                    mov bl, 01
:00544BC2 8B45F0                  mov eaxdword ptr [ebp-10]
:00544BC5 E822FEEBFF              call 004049EC
:00544BCA 8845F6                  mov byte ptr [ebp-0A], al
:00544BCD 8D85E4FEFFFF            lea eaxdword ptr [ebp+FFFFFEE4]
:00544BD3 8D95EFFEFFFF            lea edxdword ptr [ebp+FFFFFEEF]
:00544BD9 E8B2FDEBFF              call 00404990
:00544BDE 8B85E4FEFFFF            mov eaxdword ptr [ebp+FFFFFEE4]
:00544BE4 8D95E8FEFFFF            lea edxdword ptr [ebp+FFFFFEE8]
:00544BEA E8E144ECFF              call 004090D0
:00544BEF 8B85E8FEFFFF            mov eaxdword ptr [ebp+FFFFFEE8]
:00544BF5 E8F2FDEBFF              call 004049EC
:00544BFA 84C0                    test alal
:00544BFC 7665                    jbe 00544C63
:00544BFE 8845EF                  mov byte ptr [ebp-11], al
:00544C01 C645F701                mov [ebp-09], 01
:00544C05 8D8DF0FEFFFF            lea ecxdword ptr [ebp+FFFFFEF0]


//来到这里进行第一次注册变码生成

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544C61(C)
|
:00544C0B 33C0                    xor eaxeax
:00544C0D 8AC3                    mov albl                           //首次bl=1
:00544C0F 33D2                    xor edxedx
:00544C11 8A55F6                  mov dlbyte ptr [ebp-0A]            //输入mail长度进dl
:00544C14 8BDA                    mov ebxedx
:00544C16 33D2                    xor edxedx
:00544C18 F7F3                    div ebx                              //除ebx 
:00544C1A 8BDA                    mov ebxedx
:00544C1C 33C0                    xor eaxeax
:00544C1E 8AC3                    mov albl                           //取余数k
:00544C20 8B55F0                  mov edxdword ptr [ebp-10]          //mail 地址
:00544C23 0FB64402FF              movzx eaxbyte ptr [edx+eax-01]     //选取mail中一个字符与k相关
:00544C28 BE09000000              mov esi, 00000009
:00544C2D 33D2                    xor edxedx
:00544C2F F7F6                    div esi
:00544C31 8BF2                    mov esiedx                         //选取字符除9的余数J
:00544C33 33C0                    xor eaxeax
:00544C35 8A01                    mov albyte ptr [ecx]               //依次机器码位    
:00544C37 F7EE                    imul esi                             //乘以余数J
:00544C39 03C6                    add eaxesi                          //再加余数J
:00544C3B BE09000000              mov esi, 00000009
:00544C40 99                      cdq
:00544C41 F7FE                    idiv esi
:00544C43 83C230                  add edx, 00000030                    //得到结果除9加30 
:00544C46 8811                    mov byte ptr [ecx], dl               //依次存变码位 
:00544C48 8A45F7                  mov albyte ptr [ebp-09]            //循环次数首次为1
:00544C4B F66DF7                  imul [ebp-09]                        //循环次数自乘L    
:00544C4E 02D8                    add blal                           //余数k加循环次数自乘L 
:00544C50 80F363                  xor bl, 63          
:00544C53 8BC3                    mov eaxebx
:00544C55 03C0                    add eaxeax                         //结果或非63在加1 
:00544C57 40                      inc eax
:00544C58 8BD8                    mov ebxeax                         //存结果入ebx 
:00544C5A FE45F7                  inc [ebp-09]                         //循环次数加1
:00544C5D 41                      inc ecx
:00544C5E FE4DEF                  dec [ebp-11]
:00544C61 75A8                    jne 00544C0B                        //循环

//至此生成第一次注册变码

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544BFC(C)
|
:00544C63 8D45F0                  lea eaxdword ptr [ebp-10]
:00544C66 8B55FC                  mov edxdword ptr [ebp-04]
:00544C69 E85EFBEBFF              call 004047CC
:00544C6E 8B45F0                  mov eaxdword ptr [ebp-10]
:00544C71 E876FDEBFF              call 004049EC
:00544C76 8845F6                  mov byte ptr [ebp-0A], al
:00544C79 8D85DCFEFFFF            lea eaxdword ptr [ebp+FFFFFEDC]
:00544C7F 8D95EFFEFFFF            lea edxdword ptr [ebp+FFFFFEEF]
:00544C85 E806FDEBFF              call 00404990
:00544C8A 8B85DCFEFFFF            mov eaxdword ptr [ebp+FFFFFEDC]
:00544C90 8D95E0FEFFFF            lea edxdword ptr [ebp+FFFFFEE0]
:00544C96 E83544ECFF              call 004090D0
:00544C9B 8B85E0FEFFFF            mov eaxdword ptr [ebp+FFFFFEE0]
:00544CA1 E846FDEBFF              call 004049EC
:00544CA6 84C0                    test alal
:00544CA8 0F869E000000            jbe 00544D4C
:00544CAE 8845EF                  mov byte ptr [ebp-11], al
:00544CB1 C645F701                mov [ebp-09], 01
:00544CB5 8D8DF0FEFFFF            lea ecxdword ptr [ebp+FFFFFEF0]



//来到这里进行第二次注册变码
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544D11(C)           
|
:00544CBB 33C0                    xor eaxeax
:00544CBD 8AC3                    mov albl                         //第一次变码后的bl
:00544CBF 33D2                    xor edxedx
:00544CC1 8A55F6                  mov dlbyte ptr [ebp-0A]         //第一次变码长度进dl
:00544CC4 8BDA                    mov ebxedx
:00544CC6 33D2                    xor edxedx
:00544CC8 F7F3                    div ebx                            //除ebx
:00544CCA 8BDA                    mov ebxedx            
:00544CCC 33C0                    xor eaxeax
:00544CCE 8AC3                    mov albl                        //取余数k
:00544CD0 8B55F0                  mov edxdword ptr [ebp-10]       //第一次变码地址
:00544CD3 0FB64402FF              movzx eaxbyte ptr [edx+eax-01]  //第一次变码中一个字符与k相关
:00544CD8 BE09000000              mov esi, 00000009
:00544CDD 33D2                    xor edxedx
:00544CDF F7F6                    div esi                           
:00544CE1 8BF2                    mov esiedx                     //选取字符除9的余数 
:00544CE3 33C0                    xor eaxeax
:00544CE5 8A01                    mov albyte ptr [ecx]           //依次机器码位  
:00544CE7 F7EE                    imul esi                         //乘以前余数
:00544CE9 03C6                    add eaxesi                     //再加余数
:00544CEB BE09000000              mov esi, 00000009
:00544CF0 99                      cdq
:00544CF1 F7FE                    idiv esi                        
:00544CF3 83C230                  add edx, 00000030                //得到结果除9加30 
:00544CF6 8811                    mov byte ptr [ecx], dl           //依次存变码位 
:00544CF8 8A45F7                  mov albyte ptr [ebp-09]        //循环次数首次为1
:00544CFB F66DF7                  imul [ebp-09]                    //循环次数自乘L
:00544CFE 02D8                    add blal                       //余数k加循环次数自乘L 
:00544D00 80F363                  xor bl, 63                        
:00544D03 8BC3                    mov eaxebx                     
:00544D05 03C0                    add eaxeax                     //结果或非63在加1 
:00544D07 40                      inc eax
:00544D08 8BD8                    mov ebxeax                     //存结果入ebx  
:00544D0A FE45F7                  inc [ebp-09]                     //循环次数加1
:00544D0D 41                      inc ecx
:00544D0E FE4DEF                  dec [ebp-11]
:00544D11 75A8                    jne 00544CBB                     //循环
//////////////////////////////////////////////////////////////////////////////
//至此生成第二次注册变码

:00544D13 EB37                    jmp 00544D4C

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544D5F(C)
|
:00544D15 8D85D8FEFFFF            lea eaxdword ptr [ebp+FFFFFED8]
:00544D1B 8D95EFFEFFFF            lea edxdword ptr [ebp+FFFFFEEF]
:00544D21 E86AFCEBFF              call 00404990
:00544D26 8D85D8FEFFFF            lea eaxdword ptr [ebp+FFFFFED8]
:00544D2C BA444E5400              mov edx, 00544E44
:00544D31 E8BEFCEBFF              call 004049F4
:00544D36 8B95D8FEFFFF            mov edxdword ptr [ebp+FFFFFED8]
:00544D3C 8D85EFFEFFFF            lea eaxdword ptr [ebp+FFFFFEEF]
:00544D42 B9FF000000              mov ecx, 000000FF
:00544D47 E87CFCEBFF              call 004049C8

* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:

|:00544CA8(C), :00544D13(U)
|
:00544D4C 33C0                    xor eaxeax
:00544D4E 8A85EFFEFFFF            mov albyte ptr [ebp+FFFFFEEF]
:00544D54 B903000000              mov ecx, 00000003
:00544D59 33D2                    xor edxedx
:00544D5B F7F1                    div ecx
:00544D5D 85D2                    test edxedx
:00544D5F 77B4                    ja 00544D15
:00544D61 8B4508                  mov eaxdword ptr [ebp+08]
:00544D64 E8CBF9EBFF              call 00404734
:00544D69 33C0                    xor eaxeax
:00544D6B 8A85EFFEFFFF            mov albyte ptr [ebp+FFFFFEEF]
:00544D71 B903000000              mov ecx, 00000003
:00544D76 33D2                    xor edxedx
:00544D78 F7F1                    div ecx
:00544D7A 8BD8                    mov ebxeax
:00544D7C 85DB                    test ebxebx
:00544D7E 7E79                    jle 00544DF9
:00544D80 BE01000000              mov esi, 00000001

//由00544DF7至00544DF7循环计算注册码,将计算的第二次15位变码每三位为一组,
分别将每组十进制数转换成16进制数

例如:变码为:160364334016636
             
对应注册码为:A0-16C-14E-10-27C。
           (160 364 334 016 636)

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544DF7(C)
|
:00544D85 83FE01                  cmp esi, 00000001
:00544D88 7410                    je 00544D9A
:00544D8A 8B4508                  mov eaxdword ptr [ebp+08]
:00544D8D BA504E5400              mov edx, 00544E50
:00544D92 E85DFCEBFF              call 004049F4
:00544D97 8B4508                  mov eaxdword ptr [ebp+08]

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544D88(C)
|
:00544D9A 8D85D0FDFFFF            lea eaxdword ptr [ebp+FFFFFDD0]
:00544DA0 50                      push eax
:00544DA1 8BC6                    mov eaxesi
:00544DA3 48                      dec eax
:00544DA4 8D1440                  lea edxdword ptr [eax+2*eax]
:00544DA7 42                      inc edx
:00544DA8 B903000000              mov ecx, 00000003
:00544DAD 8D85EFFEFFFF            lea eaxdword ptr [ebp+FFFFFEEF]
:00544DB3 E8F8DBEBFF              call 004029B0
:00544DB8 8D95D0FDFFFF            lea edxdword ptr [ebp+FFFFFDD0]
:00544DBE 8D85D0FEFFFF            lea eaxdword ptr [ebp+FFFFFED0]
:00544DC4 E8C7FBEBFF              call 00404990
:00544DC9 8B85D0FEFFFF            mov eaxdword ptr [ebp+FFFFFED0]
:00544DCF E8DC47ECFF              call 004095B0
:00544DD4 8D8DD4FEFFFF            lea ecxdword ptr [ebp+FFFFFED4]
:00544DDA BA01000000              mov edx, 00000001
:00544DDF E89047ECFF              call 00409574
:00544DE4 8B95D4FEFFFF            mov edxdword ptr [ebp+FFFFFED4]
:00544DEA 8B4508                  mov eaxdword ptr [ebp+08]
:00544DED E802FCEBFF              call 004049F4
:00544DF2 8B4508                  mov eaxdword ptr [ebp+08]
:00544DF5 46                      inc esi
:00544DF6 4B                      dec ebx
:00544DF7 758C                    jne 00544D85

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544D7E(C)
|
:00544DF9 33C0                    xor eaxeax
:00544DFB 5A                      pop edx
:00544DFC 59                      pop ecx
:00544DFD 59                      pop ecx
:00544DFE 648910                  mov dword ptr fs:[eax], edx
:00544E01 68334E5400              push 00544E33

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00544E31(U)
|
:00544E06 8D85D0FEFFFF            lea eaxdword ptr [ebp+FFFFFED0]
:00544E0C BA07000000              mov edx, 00000007
:00544E11 E842F9EBFF              call 00404758
:00544E16 8D45F0                  lea eaxdword ptr [ebp-10]
:00544E19 E816F9EBFF              call 00404734
:00544E1E 8D45F8                  lea eaxdword ptr [ebp-08]
:00544E21 BA02000000              mov edx, 00000002
:00544E26 E82DF9EBFF              call 00404758
:00544E2B C3                      ret


:00544E2C E94BF2EBFF              jmp 0040407C
:00544E31 EBD3                    jmp 00544E06
:00544E33 5E                      pop esi
:00544E34 5B                      pop ebx
:00544E35 8BE5                    mov espebp
:00544E37 5D                      pop ebp
:00544E38 C20400                  ret 0004
////////////////////////////////////////////////////////
注册分析结束
////////////////////////////////////////////////////////

顺便说以下:
////////////////////////////////////////////////////////
软件的机器码是由用户硬盘的序列号和一个字串"197712280530qlm"<估计是作者的生日、制作日期、姓名缩写>
生成的。
////////////////////////////////////////////////////////
机器码生成部分:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0053E342(C)
|
:0053E361 8D85F4FEFFFF            lea eaxdword ptr [ebp+FFFFFEF4]
:0053E367 8B55FC                  mov edxdword ptr [ebp-04]
:0053E36A B9FF000000              mov ecx, 000000FF
:0053E36F E85466ECFF              call 004049C8
:0053E374 8D85F4FEFFFF            lea eaxdword ptr [ebp+FFFFFEF4]
:0053E37A 8D4DF4                  lea ecxdword ptr [ebp-0C]

* Possible StringData Ref from Code Obj ->"197712280530qlmU嬱j"
                                  |
:0053E37D BA10E45300              mov edx, 0053E410
:0053E382 E8D5FDFFFF              call 0053E15C                       //机器码call
:0053E387 8B55F4                  mov edxdword ptr [ebp-0C]
:0053E38A 8B8318030000            mov eaxdword ptr [ebx+00000318]
:0053E390 E8EF6EF0FF              call 00445284
:0053E395 33C0                    xor eaxeax
:0053E397 5A                      pop edx
:0053E398 59                      pop ecx
:0053E399 59                      pop ecx
:0053E39A 648910                  mov dword ptr fs:[eax], edx
:0053E39D 68B7E35300              push 0053E3B7

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0053E3B5(U)
|
:0053E3A2 8D45F4                  lea eaxdword ptr [ebp-0C]
:0053E3A5 BA03000000              mov edx, 00000003
:0053E3AA E8A963ECFF              call 00404758
:0053E3AF C3                      ret
/////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////
机器码计算部分:
////////////////////////////////////////////////////////////////////
 Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0053E291(C)
|
:0053E20F 8A45FB                  mov albyte ptr [ebp-05]     //[ebp-05] 为8次循环次数,针对8位硬盘序列号
:0053E212 3A45F9                  cmp albyte ptr [ebp-07]     //是否<=8不是则[ebp-05] 置1
:0053E215 7604                    jbe 0053E21B
:0053E217 C645FB01                mov [ebp-05], 01

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0053E215(C)
|
:0053E21B 33C9                    xor ecxecx
:0053E21D 8A4DFA                  mov clbyte ptr [ebp-06]     //循环次数设y  
:0053E220 8D4102                  lea eaxdword ptr [ecx+02]   
:0053E223 F7E9                    imul ecx
:0053E225 8D5114                  lea edxdword ptr [ecx+14]
:0053E228 8BFA                    mov ediedx
:0053E22A 99                      cdq
:0053E22B F7FF                    idiv edi                      
:0053E22D 8BFA                    mov ediedx                  //存((y+2)*y)%(y+0x14)入edi
:0053E22F 8BC1                    mov eaxecx
:0053E231 F7E9                    imul ecx
:0053E233 8D510A                  lea edxdword ptr [ecx+0A]
:0053E236 51                      push ecx                      //保存y 
:0053E237 8BCA                    mov ecxedx
:0053E239 99                      cdq
:0053E23A F7F9                    idiv ecx
:0053E23C 59                      pop ecx
:0053E23D 8BC2                    mov eaxedx                  //存(y*y)%(y+0xa)入eax
:0053E23F 51                      push ecx
:0053E240 B903000000              mov ecx, 00000003              
:0053E245 99                      cdq
:0053E246 F7F9                    idiv ecx                      //eax=((y*y)%(y+0xa))/3
:0053E248 59                      pop ecx
:0053E249 03F8                    add edieax                  //edi=((y+2)*y)%(y+0x14)+((y*y)%(y+0xa))/3    
:0053E24B 8BC1                    mov eaxecx                  
:0053E24D 03C0                    add eaxeax
:0053E24F 03F8                    add edieax                  
:0053E251 47                      inc edi                       //edi=((y+2)*y)%(y+0x14)+((y*y)%(y+0xa))/3+y+y+1 设为k
:0053E252 8BCF                    mov ecxedi
:0053E254 33C0                    xor eaxeax

:0053E256 8A45FB                  mov albyte ptr [ebp-05]
:0053E259 0FB68405F8FEFFFF        movzx eaxbyte ptr [ebp+eax-00000108] 
                                             //[ebp+eax-00000108]硬盘序列号地址。取对应位入eax

:0053E261 03C1                    add eaxecx             //   k+对应位值
:0053E263 B909000000              mov ecx, 00000009
:0053E268 99                      cdq
:0053E269 F7F9                    idiv ecx
:0053E26B 8BCA                    mov ecxedx            
:0053E26D 81F10B040000            xor ecx, 0000040B        //(k+对应位值)模除9xor0x40b 设为n       
:0053E273 33C0                    xor eaxeax
:0053E275 8A03                    mov albyte ptr [ebx]   //[ebx]为常字符串地址,取对应循环的位字符值设为m
:0053E277 03C1                    add eaxecx
:0053E279 B909000000              mov ecx, 00000009
:0053E27E 99                      cdq
:0053E27F F7F9                    idiv ecx
:0053E281 83C230                  add edx, 00000030
:0053E284 8816                    mov byte ptr [esi], dl  //存计算对应循环位及起码=(n+m)%9+30      

:0053E286 FE45FB                  inc [ebp-05]            
:0053E289 FE45FA                  inc [ebp-06]
:0053E28C 46                      inc esi
:0053E28D 43                      inc ebx
:0053E28E FE4DF8                  dec [ebp-08]
:0053E291 0F8578FFFFFF            jne 0053E20F             
//////////////////////////////////////////////////////////以上为计算机器码过程///////////////////////


结束语:
    
我的一个结果。
机器码:234430542065507
mail:HaIlDuZ[CcG]
注册码:A0-16C-14E-10-27C

HaIlDuZ [CcG]
2003。9。3