• 标 题:交通法规考试系统2005 破解简析
  • 作 者:qiweixue
  • 时 间:2004-12-11,16:39
  • 链 接:http://bbs.pediy.com

交通法规考试系统2005 破解简析
工具: od , VB反编译器
声明:高手略过…… 破VB一个字烦.
交通法规考试系统2005 分北京版本,与全国版,破了任何一个,都开始用任何一个~对作者冲击很大,简单的分析一下;有错误的地方,感谢指出.
软件介绍:是浮游工作室的主打产品,对用户通过驾驶执照的理论考试有巨大的帮助,根据两年来大量用户的反馈,使用本软件进行备考,可以明显缩短备考时间,消除机考的紧张感,并让您轻松通过理论考试。 
注册事件入口:
0045E250    > \55                push ebp
0045E251    .  8BEC              mov ebp,esp
0045E253    .  83EC 14           sub esp,14
0045E256    .  68 762A4000       push <jmp.&MSVBVM60.__vbaExceptHandler>  ;  SE handler installation
0045E25B    .  64:A1 00000000    mov eax,dword ptr fs:[0]
0045E261    .  50                push eax
0045E262    .  64:8925 00000000  mov dword ptr fs:[0],esp
0045E269    .  81EC E8000000     sub esp,0E8
……找到关键CALL:
0045E4AD    .  8D4D C0           lea ecx,dword ptr ss:[ebp-40]
0045E4B0    .  51                push ecx               ;指向假注册吗
0045E4B1    .  8D55 C4           lea edx,dword ptr ss:[ebp-3C]
0045E4B4    .  52                push edx               ;指向用户名
0045E4B5    .  E8 160AFDFF       call TranExam.0042EED
……函数入口:
0042EED0    $  55                push ebp
0042EED1    .  8BEC              mov ebp,esp
0042EED3    .  83EC 08           sub esp,8
…… 
q        i     w      e         i         x        u       e    长度为:8

71       69    77      65       69       78        75     65     ;16进制                     

113      105   119     101      105      120       117     101   ;10进制

10.6301 10.247 10.9087 10.04988 10.24695 10.95445  10.81665 10.049876 ;平方根
 
第一个循环,8次:
0042EF6B    .  BE 01000000       mov esi,1                                ;  esi 计数器=1
0042EF70    .  8975 E8           mov dword ptr ss:[ebp-18],esi            ;  [ebp-18] =esi=1
0042EF73    >  3BF0              cmp esi,eax                              ;  eax=8,esi=1
0042EF75    .  0F8F C5020000     jg TranExam.0042F240                     ;当esi大与eax,跳出循环
0042EF7B    .  8B45 08           mov eax,dword ptr ss:[ebp+8]             ;  (*[ebp-8])=qiweixue(0x1747e4)
0042EF7E    .  8D8D 78FFFFFF     lea ecx,dword ptr ss:[ebp-88]            ;  [ebp-88]=0
0042EF84    .  8985 40FFFFFF     mov dword ptr ss:[ebp-C0],eax            ;  (*[ebp-c0])=qiweixue(0x1747e4)
0042EF8A    .  51                push ecx
0042EF8B    .  8D95 38FFFFFF     lea edx,dword ptr ss:[ebp-C8]            ;  [ebp-c8]=0
0042EF91    .  56                push esi                                 ;  esi=1 记数为1
0042EF92    .  8D85 68FFFFFF     lea eax,dword ptr ss:[ebp-98]            ;  [ebp-98]=0
0042EF98    .  52                push edx
0042EF99    .  50                push eax
0042EF9A    .  C745 80 01000000  mov dword ptr ss:[ebp-80],1              ;  [ebp-80]=1
0042EFA1    .  C785 78FFFFFF 020>mov dword ptr ss:[ebp-88],2              ;  [ebp-88]=2
0042EFAB    .  C785 38FFFFFF 084>mov dword ptr ss:[ebp-C8],4008
0042EFB5    .  FF15 BC104000     call dword ptr ds:[<&MSVBVM60.#632>]     ;  MSVBVM60.rtcMidCharVar
0042EFBB    .  8D8D 68FFFFFF     lea ecx,dword ptr ss:[ebp-98]
0042EFC1    .  8D55 A8           lea edx,dword ptr ss:[ebp-58]
0042EFC4    .  51                push ecx
0042EFC5    .  52                push edx
0042EFC6    .  FFD3              call ebx
0042EFC8    .  50                push eax
0042EFC9    .  FF15 40104000     call dword ptr ds:[<&MSVBVM60.#516>]     ;  MSVBVM60.rtcAnsiValueBstr
0042EFCF    .  8BC8              mov ecx,eax                              ;  返回 q 的ASC=71
0042EFD1    .  FFD7              call edi                                 ;  取绝对值
0042EFD3    .  0FBFC0            movsx eax,ax
0042EFD6    .  8985 C8FEFFFF     mov dword ptr ss:[ebp-138],eax           ;  [ebp-138]=71
0042EFDC    .  DB85 C8FEFFFF     fild dword ptr ss:[ebp-138]              ;  取实数 q的113
0042EFE2    .  DD9D C0FEFFFF     fstp qword ptr ss:[ebp-140]              ;  [ebp-140]为0
0042EFE8    .  8B8D C4FEFFFF     mov ecx,dword ptr ss:[ebp-13C]           ;  [ebp-13c]=405c4000
0042EFEE    .  8B95 C0FEFFFF     mov edx,dword ptr ss:[ebp-140]
0042EFF4    .  51                push ecx
0042EFF5    .  52                push edx
0042EFF6    .  FF15 D4114000     call dword ptr ds:[<&MSVBVM60.#614>]     ;  MSVBVM60.rtcSqr
0042EFFC    .  8B45 08           mov eax,dword ptr ss:[ebp+8]             ;  qiweixue
0042EFFF    .  8D4D 98           lea ecx,dword ptr ss:[ebp-68]            ;  [ebp-68]=0
0042F002    .  DD9D 18FFFFFF     fstp qword ptr ss:[ebp-E8]               ;  [ebp-e8]=78d2d036
0042F008    .  8985 60FFFFFF     mov dword ptr ss:[ebp-A0],eax            ;  (*[ebp-a0])=qiweixue
0042F00E    .  51                push ecx
0042F00F    .  8D95 58FFFFFF     lea edx,dword ptr ss:[ebp-A8]            ;  [ebp-a8]= 0
0042F015    .  56                push esi
0042F016    .  8D45 88           lea eax,dword ptr ss:[ebp-78]            ;  [ebp-78]=0
0042F019    .  52                push edx
0042F01A    .  50                push eax
0042F01B    .  C745 A0 01000000  mov dword ptr ss:[ebp-60],1
0042F022    .  C745 98 02000000  mov dword ptr ss:[ebp-68],2
0042F029    .  C785 58FFFFFF 084>mov dword ptr ss:[ebp-A8],4008
0042F033    .  FF15 BC104000     call dword ptr ds:[<&MSVBVM60.#632>]     ;  MSVBVM60.rtcMidCharVar
0042F039    .  8D4D 88           lea ecx,dword ptr ss:[ebp-78]
0042F03C    .  8D55 AC           lea edx,dword ptr ss:[ebp-54]
0042F03F    .  51                push ecx
0042F040    .  52                push edx
0042F041    .  FFD3              call ebx
0042F043    .  50                push eax
0042F044    .  FF15 40104000     call dword ptr ds:[<&MSVBVM60.#516>]     ;  MSVBVM60.rtcAnsiValueBstr
0042F04A    .  8BC8              mov ecx,eax
0042F04C    .  FFD7              call edi
0042F04E    .  0FBFC0            movsx eax,ax
0042F051    .  0FAFC6            imul eax,esi                             ;  用户名*计数数值
0042F054    .  0F80 54060000     jo TranExam.0042F6AE                     ;  溢出就error
0042F05A    .  0FAFC6            imul eax,esi                             ;eax=eax*esi
0042F05D    .  8B4D E4           mov ecx,dword ptr ss:[ebp-1C]
0042F060    .  0F80 48060000     jo TranExam.0042F6AE                     ;溢出就跳死
0042F066    .  03C1              add eax,ecx                              ;eax=eax+ecx
0042F068    .  0F80 40060000     jo TranExam.0042F6AE                     ;溢出就跳死
0042F06E    .  8985 BCFEFFFF     mov dword ptr ss:[ebp-144],eax
0042F074    .  DB85 BCFEFFFF     fild dword ptr ss:[ebp-144]              ;浮点计算   
0042F07A    .  DD9D B4FEFFFF     fstp qword ptr ss:[ebp-14C]
0042F080    .  DB45 E8           fild dword ptr ss:[ebp-18]
0042F083    .  DD9D ACFEFFFF     fstp qword ptr ss:[ebp-154]
0042F089    .  DD85 ACFEFFFF     fld qword ptr ss:[ebp-154]
0042F08F    .  DC8D 18FFFFFF     fmul qword ptr ss:[ebp-E8]
0042F095    .  DC05 50124000     fadd qword ptr ds:[401250]
0042F09B    .  DC8D B4FEFFFF     fmul qword ptr ss:[ebp-14C]
0042F0A1    .  DFE0              fstsw ax
0042F0A3    .  A8 0D             test al,0D                               ;al与od比较
0042F0A5    .  0F85 FE050000     jnz TranExam.0042F6A9                    ;  跳就overflow的
0042F0AB    .  FF15 E8114000     call dword ptr ds:[<&MSVBVM60.__vbaFpI4>>;  MSVBVM60.__vbaFpI4
0042F0B1    .  99                cdq                                      ;  eax=522
0042F0B2    .  B9 10270000       mov ecx,2710                             ;  ecx=2710
0042F0B7    .  F7F9              idiv ecx                                 ;除以2710
0042F0B9    .  8955 E4           mov dword ptr ss:[ebp-1C],edx            ;  [ebp-1c]=00000522
0042F0BC    .  8D55 A8           lea edx,dword ptr ss:[ebp-58]
0042F0BF    .  8D45 AC           lea eax,dword ptr ss:[ebp-54]
0042F0C2    .  52                push edx
0042F0C3    .  50                push eax
0042F0C4    .  6A 02             push 2
0042F0C6    .  FF15 98114000     call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStrList
0042F0CC    .  8D8D 68FFFFFF     lea ecx,dword ptr ss:[ebp-98]
0042F0D2    .  8D95 78FFFFFF     lea edx,dword ptr ss:[ebp-88]
0042F0D8    .  51                push ecx
0042F0D9    .  8D45 88           lea eax,dword ptr ss:[ebp-78]
0042F0DC    .  52                push edx
0042F0DD    .  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F0E0    .  50                push eax
0042F0E1    .  51                push ecx
0042F0E2    .  6A 04             push 4
0042F0E4    .  FF15 34104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVarList
0042F0EA    .  8B55 08           mov edx,dword ptr ss:[ebp+8]
0042F0ED    .  83C4 20           add esp,20
0042F0F0    .  8D45 98           lea eax,dword ptr ss:[ebp-68]
0042F0F3    .  8995 60FFFFFF     mov dword ptr ss:[ebp-A0],edx
0042F0F9    .  50                push eax
0042F0FA    .  8D8D 58FFFFFF     lea ecx,dword ptr ss:[ebp-A8]
0042F100    .  56                push esi
0042F101    .  8D55 88           lea edx,dword ptr ss:[ebp-78]
0042F104    .  51                push ecx
0042F105    .  52                push edx
0042F106    .  C745 A0 01000000  mov dword ptr ss:[ebp-60],1
0042F10D    .  C745 98 02000000  mov dword ptr ss:[ebp-68],2
……
0042F21B    .  99                cdq
0042F21C    .  B9 A0860100       mov ecx,186A0
0042F221    .  F7F9              idiv ecx                                 ;  除以 186a0
0042F223    .  B8 01000000       mov eax,1
0042F228    .  03C6              add eax,esi                              ;  esi计数加一
0042F22A    .  0F80 7E040000     jo TranExam.0042F6AE
0042F230    .  8BF0              mov esi,eax
0042F232    .  8B45 DC           mov eax,dword ptr ss:[ebp-24]            ;  eax=8 要8次循环
0042F235    .  8975 E8           mov dword ptr ss:[ebp-18],esi
0042F238    .  8955 D8           mov dword ptr ss:[ebp-28],edx            ;  [ebp-28]=3025
0042F23B    .^ E9 33FDFFFF       jmp TranExam.0042EF73
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二个循环4次:
0042F240    >  8B3D 94114000     mov edi,dword ptr ds:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrCopy
0042F246    .  8B1D 2C104000     mov ebx,dword ptr ds:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrVarMove
0042F24C    .  33F6              xor esi,esi
0042F24E    >  B8 04000000       mov eax,4                                ;  eax=4 循环4次
0042F253    .  3BF0              cmp esi,eax
0042F255    .  0F8F 8C000000     jg TranExam.0042F2E7                     ;条件成立调处循环
0042F25B    .  8BD6              mov edx,esi
0042F25D    .  8B45 E4           mov eax,dword ptr ss:[ebp-1C]            ;  [ebp-1c]=1A8D
0042F260    .  0FAFD6            imul edx,esi                             ;  edx=esi*edx
0042F263    .  0F80 45040000     jo TranExam.0042F6AE
0042F269    .  0FAFD6            imul edx,esi                             ;  edx=esi*edx
0042F26C    .  0F80 3C040000     jo TranExam.0042F6AE
0042F272    .  83C0 1F           add eax,1F                               ;  eax=eax+1f
0042F275    .  0F80 33040000     jo TranExam.0042F6AE
0042F27B    .  03D0              add edx,eax                              ;  edx=edx+eax
0042F27D    .  0F80 2B040000     jo TranExam.0042F6AE                     ;  error verflow
0042F283    .  81E2 7F000080     and edx,8000007F                         ;  edx=edx+8000007f
0042F289    .  79 05             jns short TranExam.0042F290
0042F28B    .  4A                dec edx
0042F28C    .  83CA 80           or edx,FFFFFF80
0042F28F    .  42                inc edx
0042F290    >  8D4D 98           lea ecx,dword ptr ss:[ebp-68]            ;  [ebp-68]=0
0042F293    .  52                push edx                                 ;  edx=2c
0042F294    .  51                push ecx                                 ;  ecx=0
0042F295    .  FF15 48114000     call dword ptr ds:[<&MSVBVM60.#608>]     ;  MSVBVM60.rtcVarBstrFromAnsi
0042F29B    .  83FE 11           cmp esi,11
0042F29E    .  72 06             jb short TranExam.0042F2A6
0042F2A0    .  FF15 CC104000     call dword ptr ds:[<&MSVBVM60.__vbaGener>;  MSVBVM60.__vbaGenerateBoundsError
0042F2A6    >  8D55 98           lea edx,dword ptr ss:[ebp-68]            ;  [ebp-68]=120008
0042F2A9    .  52                push edx
0042F2AA    .  FFD3              call ebx
0042F2AC    .  8BD0              mov edx,eax
0042F2AE    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]            ;  [ebp-54]=0
0042F2B1    .  FF15 04124000     call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove
0042F2B7    .  8BD0              mov edx,eax
0042F2B9    .  8B45 C4           mov eax,dword ptr ss:[ebp-3C]
0042F2BC    .  8D0CB0            lea ecx,dword ptr ds:[eax+esi*4]
0042F2BF    .  FFD7              call edi
0042F2C1    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]
0042F2C4    .  FF15 30124000     call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr
0042F2CA    .  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F2CD    .  FF15 1C104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVar
0042F2D3    .  B8 01000000       mov eax,1
0042F2D8    .  03C6              add eax,esi                              ;  esi=esi+1  循环
0042F2DA    .  0F80 CE030000     jo TranExam.0042F6AE
0042F2E0    .  8BF0              mov esi,eax
0042F2E2    .^ E9 67FFFFFF       jmp TranExam.0042F24E                    ;  循环
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第三个循环也循环4次:
0042F2E7    >  BE 05000000       mov esi,5                                ;  esi=5
0042F2EC    >  B8 09000000       mov eax,9                                ;  eax=9
0042F2F1    .  3BF0              cmp esi,eax
0042F2F3    .  0F8F 8C000000     jg TranExam.0042F385                     ;  比较循环 ,当esi大于eax是跳出循环
0042F2F9    .  8BCE              mov ecx,esi                              ;  cx=5
0042F2FB    .  8B55 E0           mov edx,dword ptr ss:[ebp-20]            ;  [ebp-20]=0
0042F2FE    .  0FAFCE            imul ecx,esi                             ;  ecx=ecx*esi
0042F301    .  0F80 A7030000     jo TranExam.0042F6AE                     ;  溢出就死
0042F307    .  0FAFCE            imul ecx,esi                             ;  ecx=ecx*esi
0042F30A    .  0F80 9E030000     jo TranExam.0042F6AE                     ;  溢出就死
0042F310    .  83C2 1F           add edx,1F                               ;  edx=edx+1f
0042F313    .  0F80 95030000     jo TranExam.0042F6AE
0042F319    .  03CA              add ecx,edx                              ;  ecx=ecx+edx
0042F31B    .  0F80 8D030000     jo TranExam.0042F6AE                     ;  溢出就死
0042F321    .  81E1 7F000080     and ecx,8000007F                         ;   ecx=ecx^8000007f
0042F327    .  79 05             jns short TranExam.0042F32E              ;  S=1 借位就跳
0042F329    .  49                dec ecx
0042F32A    .  83C9 80           or ecx,FFFFFF80
0042F32D    .  41                inc ecx
0042F32E    >  8D45 98           lea eax,dword ptr ss:[ebp-68]            ;  [ebp-68]=0
0042F331    .  51                push ecx
0042F332    .  50                push eax
0042F333    .  FF15 48114000     call dword ptr ds:[<&MSVBVM60.#608>]     ;  MSVBVM60.rtcVarBstrFromAnsi
0042F339    .  83FE 11           cmp esi,11                               ;  比较 esi与11,小就跳
0042F33C    .  72 06             jb short TranExam.0042F344
0042F33E    .  FF15 CC104000     call dword ptr ds:[<&MSVBVM60.__vbaGener>;  MSVBVM60.__vbaGenerateBoundsError
0042F344    >  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F347    .  51                push ecx
0042F348    .  FFD3              call ebx
0042F34A    .  8BD0              mov edx,eax
0042F34C    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]
0042F34F    .  FF15 04124000     call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove
0042F355    .  8BD0              mov edx,eax
0042F357    .  8B45 C4           mov eax,dword ptr ss:[ebp-3C]
0042F35A    .  8D0CB0            lea ecx,dword ptr ds:[eax+esi*4]
0042F35D    .  FFD7              call edi
0042F35F    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]
0042F362    .  FF15 30124000     call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr
0042F368    .  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F36B    .  FF15 1C104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVar
0042F371    .  B8 01000000       mov eax,1
0042F376    .  03C6              add eax,esi                              ;  esi=esi +1
0042F378    .  0F80 30030000     jo TranExam.0042F6AE
0042F37E    .  8BF0              mov esi,eax
0042F380    .^ E9 67FFFFFF       jmp TranExam.0042F2EC                    ;  循环
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第四个循环e-a=4次循环:

0042F385    >  BE 0A000000       mov esi,0A                               ;   esi=0A
0042F38A    >  B8 0E000000       mov eax,0E                               ;  eax=0e
0042F38F    .  3BF0              cmp esi,eax                              ;  当esi大于eax的时候就调处循环
0042F391    .  0F8F 8C000000     jg TranExam.0042F423
0042F397    .  8BCE              mov ecx,esi
0042F399    .  8B55 D8           mov edx,dword ptr ss:[ebp-28]            ;  [ebp-28]=4b22
0042F39C    .  0FAFCE            imul ecx,esi                             ;  ecx=ecx*esi
0042F39F    .  0F80 09030000     jo TranExam.0042F6AE                     ;  溢出就死
0042F3A5    .  0FAFCE            imul ecx,esi                             ;  ecx=ecx*esi
0042F3A8    .  0F80 00030000     jo TranExam.0042F6AE                     ;  溢出就死
0042F3AE    .  83C2 1F           add edx,1F                               ;  edx=edx+1f
0042F3B1    .  0F80 F7020000     jo TranExam.0042F6AE                     ;  溢出就死
0042F3B7    .  03CA              add ecx,edx                              ;  ecx=ecx+edx
0042F3B9    .  0F80 EF020000     jo TranExam.0042F6AE                     ;  溢出就死
0042F3BF    .  81E1 7F000080     and ecx,8000007F                         ;   ecx=ecx^8000007f
0042F3C5    .  79 05             jns short TranExam.0042F3CC              ;  S=1 借位就跳
0042F3C7    .  49                dec ecx
0042F3C8    .  83C9 80           or ecx,FFFFFF80
0042F3CB    .  41                inc ecx
0042F3CC    >  8D45 98           lea eax,dword ptr ss:[ebp-68]
0042F3CF    .  51                push ecx
0042F3D0    .  50                push eax
0042F3D1    .  FF15 48114000     call dword ptr ds:[<&MSVBVM60.#608>]     ;  MSVBVM60.rtcVarBstrFromAnsi
0042F3D7    .  83FE 11           cmp esi,11                               ;  比较 esi与11,小就跳
0042F3DA    .  72 06             jb short TranExam.0042F3E2
0042F3DC    .  FF15 CC104000     call dword ptr ds:[<&MSVBVM60.__vbaGener>;  MSVBVM60.__vbaGenerateBoundsError
0042F3E2    >  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F3E5    .  51                push ecx
0042F3E6    .  FFD3              call ebx
0042F3E8    .  8BD0              mov edx,eax
0042F3EA    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]
0042F3ED    .  FF15 04124000     call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove
0042F3F3    .  8BD0              mov edx,eax
0042F3F5    .  8B45 C4           mov eax,dword ptr ss:[ebp-3C]
0042F3F8    .  8D0CB0            lea ecx,dword ptr ds:[eax+esi*4]
0042F3FB    .  FFD7              call edi
0042F3FD    .  8D4D AC           lea ecx,dword ptr ss:[ebp-54]
0042F400    .  FF15 30124000     call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr
0042F406    .  8D4D 98           lea ecx,dword ptr ss:[ebp-68]
0042F409    .  FF15 1C104000     call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  MSVBVM60.__vbaFreeVar
0042F40F    .  B8 01000000       mov eax,1
0042F414    .  03C6              add eax,esi                              ;  esi=esi+1,计数加一
0042F416    .  0F80 92020000     jo TranExam.0042F6AE
0042F41C    .  8BF0              mov esi,eax
0042F41E    .^ E9 67FFFFFF       jmp TranExam.0042F38A                    ;  循环
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第5个循环,循环0E次:
0042F423    >  8B3D D0104000     mov edi,dword ptr ds:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrCmp
0042F429    .  33F6              xor esi,esi                              ;  esi=0
0042F42B    >  B8 0E000000       mov eax,0E                               ;  eax=0e
0042F430    .  3BF0              cmp esi,eax
0042F432    .  0F8F 93010000     jg TranExam.0042F5CB                     ;  当esi大于eax,跳出循环;
0042F438    >  8B1D CC104000     mov ebx,dword ptr ds:[<&MSVBVM60.__vbaGe>;  MSVBVM60.__vbaGenerateBoundsError
0042F43E    .  83FE 11           cmp esi,11                               ;  esi与11比较,大与11就BoundsError
0042F441    .  72 02             jb short TranExam.0042F445
0042F443    .  FFD3              call ebx                                 ;  <&MSVBVM60.__vbaGenerateBoundsError>
0042F445    >  83FE 11           cmp esi,11                               
0042F448    .  72 1E             jb short TranExam.0042F468               ;小与下跳
0042F44A    .  FFD3              call ebx 
0042F44C    .  83FE 11           cmp esi,11
0042F44F    .  72 17             jb short TranExam.0042F468
0042F451    .  FFD3              call ebx
0042F453    .  83FE 11           cmp esi,11
0042F456    .  72 10             jb short TranExam.0042F468
0042F458    .  FFD3              call ebx
0042F45A    .  83FE 11           cmp esi,11
0042F45D    .  72 09             jb short TranExam.0042F468
0042F45F    .  FFD3              call ebx
0042F461    .  83FE 11           cmp esi,11
0042F464    .  72 02             jb short TranExam.0042F468
0042F466    .  FFD3              call ebx
0042F468    >  8B4D C4           mov ecx,dword ptr ss:[ebp-3C]
0042F46B    .  8B14B1            mov edx,dword ptr ds:[ecx+esi*4]
0042F46E    .  52                push edx
0042F46F    .  68 28AD4000       push TranExam.0040AD28
0042F474    .  FFD7              call edi
0042F476    .  33DB              xor ebx,ebx
0042F478    .  85C0              test eax,eax
0042F47A    .  8B45 C4           mov eax,dword ptr ss:[ebp-3C]
0042F47D    .  0F9EC3            setle bl
0042F480    .  8B0CB0            mov ecx,dword ptr ds:[eax+esi*4]
0042F483    .  51                push ecx
0042F484    .  68 20AD4000       push TranExam.0040AD20
0042F489    .  FFD7              call edi
0042F48B    .  33D2              xor edx,edx
0042F48D    .  85C0              test eax,eax
0042F48F    .  8B45 C4           mov eax,dword ptr ss:[ebp-3C]
0042F492    .  0F9DC2            setge dl
0042F495    .  8B0CB0            mov ecx,dword ptr ds:[eax+esi*4]
0042F498    .  23DA              and ebx,edx
0042F49A    .  F7DB              neg ebx
0042F49C    .  1BDB              sbb ebx,ebx
0042F49E    .  51                push ecx
0042F49F    .  68 18AD4000       push TranExam.0040AD18
0042F4A4    .  F7DB              neg ebx
0042F4A6    .  FFD7              call edi
0042F4A8    .  8B55 C4           mov edx,dword ptr ss:[ebp-3C]
0042F4AB    .  899D 78FEFFFF     mov dword ptr ss:[ebp-188],ebx
0042F4B1    .  33DB              xor ebx,ebx
0042F4B3    .  85C0              test eax,eax
0042F4B5    .  8B04B2            mov eax,dword ptr ds:[edx+esi*4]
0042F4B8    .  50                push eax
0042F4B9    .  68 10AD4000       push TranExam.0040AD10
0042F4BE    .  0F9EC3            setle bl
……
0042F5B2    .^ E9 81FEFFFF       jmp TranExam.0042F438
0042F5B7    >  B8 01000000       mov eax,1
0042F5BC    .  03C6              add eax,esi            ;esi=esi+1
0042F5BE    .  0F80 EA000000     jo TranExam.0042F6AE
0042F5C4    .  8BF0              mov esi,eax
0042F5C6    .^ E9 60FEFFFF       jmp TranExam.0042F42B ;向上循环

到这里第六次循环,循环0E次: 
0042F5CB    >  33F6              xor esi,esi           ;esi=0
0042F5CD    >  8B1D 54104000     mov ebx,dword ptr ds:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrCat
0042F5D3    .  BF 01000000       mov edi,1             ;edi=1 
0042F5D8    >  B8 0E000000       mov eax,0E            ;eax=0E
0042F5DD    .  3BF0              cmp esi,eax           
0042F5DF    .  7F 31             jg short TranExam.0042F612 ;大于就跳出循环
0042F5E1    .  83FE 11           cmp esi,11
0042F5E4    .  72 06             jb short TranExam.0042F5EC
0042F5E6    .  FF15 CC104000     call dword ptr ds:[<&MSVBVM60.__vbaGener>;  MSVBVM60.__vbaGenerateBoundsError
0042F5EC    >  8B55 C4           mov edx,dword ptr ss:[ebp-3C]
0042F5EF    .  8B4D EC           mov ecx,dword ptr ss:[ebp-14]
0042F5F2    .  51                push ecx
0042F5F3    .  8B04B2            mov eax,dword ptr ds:[edx+esi*4]   ;数组地址
0042F5F6    .  50                push eax
0042F5F7    .  FFD3              call ebx
0042F5F9    .  8BD0              mov edx,eax
0042F5FB    .  8D4D EC           lea ecx,dword ptr ss:[ebp-14]
0042F5FE    .  FF15 04124000     call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove
0042F604    .  8BCF              mov ecx,edi
0042F606    .  03CE              add ecx,esi
0042F608    .  0F80 A0000000     jo TranExam.0042F6AE        ;溢出就跳死
0042F60E    .  8BF1              mov esi,ecx
0042F610    .^ EB C6             jmp short TranExam.0042F5D8 ;循环
第五次与第六次的循环运算好像与数据边界检测有关…………
最后把正确的注册码搬来搬去,终于把注册吗放到了:0017473C 

0017473C   4B 00 53 00 34 00 47 00 6C 00 6C 00 47 00 46 00  K.S.4.G.l.l.G.F.
0017474C   6F 00 48 00 73 00 74 00 74 00 56 00 79 00 00 00  o.H.s.t.t.V.y...
……
到这里真假注册吗放在寄存器内比较(弱点):
0042F61A    .  50                push eax ;
0042F61B    .  51                push ecx ;
0042F61C    .  6A 00             push 0
0042F61E    .  FF15 D0114000     call dword ptr ds:[<&MSVBVM60.__vbaStrCo>;  MSVBVM60.__vbaStrComp ;比较

比较完毕,不立即判断,先回收资源,直到这里:

0045E4DF    .  66:85FF           test di,di
0045E4E2    .  B9 04000280       mov ecx,80020004
0045E4E7    .  894D 80           mov dword ptr ss:[ebp-80],ecx
……
0045E501    .  0F84 27020000     je TranExam.0045E72E  ===这是关键跳,即便改了它,还是不能注册成功,从这里爆破不行~
它的爆破点很多,每一个功能类都要爆破,很麻烦!
最后一个很用的东西:
qiweixue 
KS4GllGFoHsttVy
注册完毕,输入到注册表,每次启动启动,都先比较注册表的注册吗。
HKEY_LOCAL_MACHINE\SOFTWARE\CNSOFT4U
hongriver REG_SZ  KS4GllGFoHsttVy
redriver  REG_SZ   qiweixue
偷个懒,注册机不逆了vb的看了就麻烦。
作者:qIwEiXuE