| 
注册时间2005-3-21
阅读权限30
最后登录1970-1-1UID346 龙战于野 
 
 TA的每日心情|  | 奋斗 2016-10-21 20:30
 | 
|---|
 签到天数: 1 天 [LV.1]初来乍到 | 
 
| 复制代码
【破文标题】lhl-crackme简单算法分析+VB注册机源码
【破解作者】hrbx
【作者主页】hrbx.ys168.com
【作者邮箱】[email protected]
【破解平台】WinXP
【使用工具】flyOD1.10、Peid
【破解日期】2006-05-21 
【软件名称】lhl-crackme
【软件大小】28.0KB
【下载地址】见附件
【加壳方式】无
【软件简介】lhl-crackme
-----------------------------------------------------------------------------------------------
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
-----------------------------------------------------------------------------------------------
【破解过程】
1.查壳。用Peid扫描脱壳后的程序,显示为:Microsoft Visual Basic 5.0 / 6.0,无壳。
2.试运行。输入注册码,当注册码长度大于等于7位时弹出提示"通过第一关",但"确定"按钮仍为灰色。
3.追出算法。OD载入CrackMe,用OD的ApiBreak插件下 Point H 断点,利用粘贴的方式输入注册信息:
===================
注册码:9876543210
===================
立即中断:
77D29303     F3:A5         rep movs dword ptr es:[edi],dword ptr ds:[esi]      ; 断点在这里
77D29305     8BC8          mov ecx,eax
77D29307     83E1 03       and ecx,3
77D2930A     F3:A4         rep movs byte ptr es:[edi],byte ptr ds:[esi]
77D2930C     E8 04F9FFFF   call USER32.77D28C15
77D29311     5F            pop edi
77D29312     5E            pop esi
中断后取消断点,F8直到返回程序领空:
004032AD    .  FF91 A00000>call dword ptr ds:[ecx+A0]
004032B3    .  3BC6        cmp eax,esi                                         ;  返回来到这里
004032B5    .  DBE2        fclex
004032B7    .  7D 12       jge short lhl-crac.004032CB
向上查找,来到004031A0处F2下断,F9运行,重新输入注册信息,中断后来到:
004031A0    > \55             push ebp                                         ;  F2在此下断,中断后F8往下走
004031A1    .  8BEC           mov ebp,esp
004031A3    .  83EC 0C        sub esp,0C
.......................................................
                     省略部分代码
.......................................................
004032AA    .  57             push edi
004032AB    .  8B0F           mov ecx,dword ptr ds:[edi]
004032AD    .  FF91 A0000000  call dword ptr ds:[ecx+A0]
004032B3    .  3BC6           cmp eax,esi                                      ;  返回来到这里
004032B5    .  DBE2           fclex
004032B7    .  7D 12          jge short lhl-crac.004032CB
004032B9    .  68 A0000000    push 0A0
004032BE    .  68 D8254000    push lhl-crac.004025D8
004032C3    .  57             push edi
004032C4    .  50             push eax
004032C5    .  FF15 34104000  call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>
004032CB    >  8B45 A8        mov eax,dword ptr ss:[ebp-58]                    ;  假码"9876543210"
004032CE    .  50             push eax
004032CF    .  FF15 18104000  call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  获取注册码长度,EAX=A
004032D5    .  8B3D 0C104000  mov edi,dword ptr ds:[<&MSVBVM60.__vbaVarMove>]  
004032DB    .  8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
004032E1    .  8D4D DC        lea ecx,dword ptr ss:[ebp-24]
004032E4    .  8985 ACFEFFFF  mov dword ptr ss:[ebp-154],eax                   ;  注册码长度保存
004032EA    .  C785 A4FEFFFF >mov dword ptr ss:[ebp-15C],3
004032F4    .  FFD7           call edi                                         
004032F6    .  8D4D A8        lea ecx,dword ptr ss:[ebp-58]
004032F9    .  FF15 EC104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]    
004032FF    .  8D4D 94        lea ecx,dword ptr ss:[ebp-6C]
00403302    .  FF15 F0104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]    
00403308    .  8D4D DC        lea ecx,dword ptr ss:[ebp-24]
0040330B    .  8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
00403311    .  51             push ecx
00403312    .  52             push edx
00403313    .  C785 ACFEFFFF >mov dword ptr ss:[ebp-154],7                     ;  常数,7
0040331D    .  C785 A4FEFFFF >mov dword ptr ss:[ebp-15C],8002
00403327    .  FF15 CC104000  call dword ptr ds:[<&MSVBVM60.__vbaVarTstGe>]    ;  比较注册码长度是否大于7
0040332D    .  66:85C0        test ax,ax
00403330    .  8B03           mov eax,dword ptr ds:[ebx]
00403332    .  53             push ebx
00403333    .  0F84 70090000  je lhl-crac.00403CA9                             ;  注册码长度不大于则Over,暴破点1,Nop掉
00403339    .  FF90 00030000  call dword ptr ds:[eax+300]
0040333F    .  8D4D 94        lea ecx,dword ptr ss:[ebp-6C]
00403342    .  50             push eax
00403343    .  51             push ecx
00403344    .  FF15 40104000  call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]      
0040334A    .  8B10           mov edx,dword ptr ds:[eax]
0040334C    .  8D4D A8        lea ecx,dword ptr ss:[ebp-58]
0040334F    .  51             push ecx
00403350    .  50             push eax
00403351    .  8985 10FEFFFF  mov dword ptr ss:[ebp-1F0],eax
00403357    .  FF92 A0000000  call dword ptr ds:[edx+A0]
0040335D    .  3BC6           cmp eax,esi
0040335F    .  DBE2           fclex
00403361    .  7D 18          jge short lhl-crac.0040337B
00403363    .  8B95 10FEFFFF  mov edx,dword ptr ss:[ebp-1F0]
00403369    .  68 A0000000    push 0A0
0040336E    .  68 D8254000    push lhl-crac.004025D8
00403373    .  52             push edx
00403374    .  50             push eax
00403375    .  FF15 34104000  call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>
0040337B    >  8B45 A8        mov eax,dword ptr ss:[ebp-58]                    ;  假码"9876543210"
0040337E    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
00403381    .  8D4D CC        lea ecx,dword ptr ss:[ebp-34]
00403384    .  8975 A8        mov dword ptr ss:[ebp-58],esi
00403387    .  8945 8C        mov dword ptr ss:[ebp-74],eax
0040338A    .  C745 84 080000>mov dword ptr ss:[ebp-7C],8
00403391    .  FFD7           call edi
00403393    .  8D4D 94        lea ecx,dword ptr ss:[ebp-6C]
00403396    .  FF15 F0104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]     
0040339C    .  8B35 94104000  mov esi,dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>>
004033A2    .  8D45 CC        lea eax,dword ptr ss:[ebp-34]
004033A5    .  6A 07          push 7                                           ;  常数,7
004033A7    .  8D4D A8        lea ecx,dword ptr ss:[ebp-58]
004033AA    .  50             push eax
004033AB    .  51             push ecx
004033AC    .  FFD6           call esi                                         ;  __vbaStrVarVal,注册码转为字符串
004033AE    .  50             push eax                                         ;  假码"9876543210"
004033AF    .  FF15 D0104000  call dword ptr ds:[<&MSVBVM60.#616>]             ;  rtcLeftCharBstr,取假码左边7位字符
004033B5    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
004033B8    .  8D4D BC        lea ecx,dword ptr ss:[ebp-44]
004033BB    .  8945 8C        mov dword ptr ss:[ebp-74],eax                    ;  注册码左边7位字符"9876543"
004033BE    .  C745 84 080000>mov dword ptr ss:[ebp-7C],8
004033C5    .  FFD7           call edi
004033C7    .  8D4D A8        lea ecx,dword ptr ss:[ebp-58]
004033CA    .  FF15 EC104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     
004033D0    .  8D55 CC        lea edx,dword ptr ss:[ebp-34]
004033D3    .  6A 07          push 7                                           ;  常数,7
004033D5    .  8D45 A8        lea eax,dword ptr ss:[ebp-58]
004033D8    .  52             push edx
004033D9    .  50             push eax
004033DA    .  FFD6           call esi                                         ;  __vbaStrVarVal,注册码转为字符串
004033DC    .  50             push eax                                         ;  假码"9876543210"
004033DD    .  FF15 DC104000  call dword ptr ds:[<&MSVBVM60.#618>]             ;  rtcRightCharBstr,取假码右边7位字符
004033E3    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
004033E6    .  8D4D AC        lea ecx,dword ptr ss:[ebp-54]
004033E9    .  8945 8C        mov dword ptr ss:[ebp-74],eax                    ;  注册码右边7位字符"6543210"
004033EC    .  C745 84 080000>mov dword ptr ss:[ebp-7C],8
004033F3    .  FFD7           call edi
004033F5    .  8D4D A8        lea ecx,dword ptr ss:[ebp-58]
004033F8    .  FF15 EC104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     
004033FE    .  8B35 C8104000  mov esi,dword ptr ds:[<&MSVBVM60.__vbaVarMod>]   
00403404    .  B8 03000000    mov eax,3
00403409    .  8D4D BC        lea ecx,dword ptr ss:[ebp-44]
0040340C    .  8985 94FEFFFF  mov dword ptr ss:[ebp-16C],eax
00403412    .  8985 34FEFFFF  mov dword ptr ss:[ebp-1CC],eax
00403418    .  8985 14FEFFFF  mov dword ptr ss:[ebp-1EC],eax
0040341E    .  8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
00403424    .  51             push ecx
00403425    .  8D45 84        lea eax,dword ptr ss:[ebp-7C]
00403428    .  BF 02000000    mov edi,2
0040342D    .  52             push edx
0040342E    .  50             push eax
0040342F    .  C785 ACFEFFFF >mov dword ptr ss:[ebp-154],42                    ;  常数1-0x42
00403439    .  89BD A4FEFFFF  mov dword ptr ss:[ebp-15C],edi
0040343F    .  C785 9CFEFFFF >mov dword ptr ss:[ebp-164],186A0                 ;  常数2-0x186A0
00403449    .  C785 8CFEFFFF >mov dword ptr ss:[ebp-174],12                    ;  常数3-0x12
00403453    .  89BD 84FEFFFF  mov dword ptr ss:[ebp-17C],edi
00403459    .  C785 7CFEFFFF >mov dword ptr ss:[ebp-184],3E8                   ;  常数4-0x3E8
00403463    .  89BD 74FEFFFF  mov dword ptr ss:[ebp-18C],edi
00403469    .  C785 6CFEFFFF >mov dword ptr ss:[ebp-194],63                    ;  常数5-0x63
00403473    .  89BD 64FEFFFF  mov dword ptr ss:[ebp-19C],edi
00403479    .  89BD 5CFEFFFF  mov dword ptr ss:[ebp-1A4],edi
0040347F    .  89BD 54FEFFFF  mov dword ptr ss:[ebp-1AC],edi
00403485    .  C785 4CFEFFFF >mov dword ptr ss:[ebp-1B4],5                     ;  常数6-0x5
0040348F    .  89BD 44FEFFFF  mov dword ptr ss:[ebp-1BC],edi
00403495    .  C785 3CFEFFFF >mov dword ptr ss:[ebp-1C4],80000007              ;  常数7-0x80000007
0040349F    .  C785 2CFEFFFF >mov dword ptr ss:[ebp-1D4],9                     ;  常数8-0x9
004034A9    .  89BD 24FEFFFF  mov dword ptr ss:[ebp-1DC],edi
004034AF    .  C785 1CFEFFFF >mov dword ptr ss:[ebp-1E4],6390F22               ;  常数9-0x6390F22
004034B9    .  FFD6           call esi                                         ;  注册码左边七位转为16进制数 Mod 常数1
004034BB    .  8D8D 94FEFFFF  lea ecx,dword ptr ss:[ebp-16C]                   ;  0x96B43F(9876543) Mod 0x42=0x27
004034C1    .  50             push eax
004034C2    .  8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
004034C8    .  51             push ecx
004034C9    .  52             push edx
004034CA    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  Mod 结果乘以常数2
004034D0    .  50             push eax                                         ;  0x27*0x186A0=0x3B8260
004034D1    .  8D45 BC        lea eax,dword ptr ss:[ebp-44]
004034D4    .  8D8D 84FEFFFF  lea ecx,dword ptr ss:[ebp-17C]
004034DA    .  50             push eax
004034DB    .  51             push ecx
004034DC    .  8D95 64FFFFFF  lea edx,dword ptr ss:[ebp-9C]
004034E2    .  52             push edx
004034E3    .  FFD6           call esi                                         ;  注册码左边七位转为16进制数 Mod 常数3
004034E5    .  50             push eax                                         ;  0x96B43F(9876543) Mod 0x12=0xF
004034E6    .  8D85 74FEFFFF  lea eax,dword ptr ss:[ebp-18C]
004034EC    .  8D8D 54FFFFFF  lea ecx,dword ptr ss:[ebp-AC]
004034F2    .  50             push eax
004034F3    .  51             push ecx
004034F4    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  第2次Mod 结果乘以常数4
004034FA    .  8B35 C0104000  mov esi,dword ptr ds:[<&MSVBVM60.__vbaVarAdd>]   ;  0xF*0x3E8=0x3A98
00403500    .  8D95 44FFFFFF  lea edx,dword ptr ss:[ebp-BC]
00403506    .  50             push eax
00403507    .  52             push edx
00403508    .  FFD6           call esi                                         ;  两次Mod结果相加
0040350A    .  50             push eax                                         ;  0x3B8260+0x3A98=0x3BBCF8
0040350B    .  8D45 BC        lea eax,dword ptr ss:[ebp-44]
0040350E    .  8D8D 64FEFFFF  lea ecx,dword ptr ss:[ebp-19C]
00403514    .  50             push eax
00403515    .  8D95 34FFFFFF  lea edx,dword ptr ss:[ebp-CC]
0040351B    .  51             push ecx
0040351C    .  52             push edx
0040351D    .  FF15 C8104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMod>]      ;  注册码左边七位转为16进制数 Mod 常数5
00403523    .  50             push eax                                         ;  0x96B43F(9876543) Mod 0x63=0x6
00403524    .  8D85 54FEFFFF  lea eax,dword ptr ss:[ebp-1AC]
0040352A    .  8D8D 24FFFFFF  lea ecx,dword ptr ss:[ebp-DC]
00403530    .  50             push eax
00403531    .  51             push ecx
00403532    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  第3次Mod 结果乘以2
00403538    .  50             push eax                                         ;  0x6*2=0xC
00403539    .  8D95 44FEFFFF  lea edx,dword ptr ss:[ebp-1BC]
0040353F    .  8D85 14FFFFFF  lea eax,dword ptr ss:[ebp-EC]
00403545    .  52             push edx
00403546    .  50             push eax
00403547    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  乘以2后再乘以常数6
0040354D    .  8D8D 04FFFFFF  lea ecx,dword ptr ss:[ebp-FC]                    ;  0xC*5=0x3C
00403553    .  50             push eax
00403554    .  51             push ecx
00403555    .  FFD6           call esi                                         ;  3次Mod结果相加
00403557    .  50             push eax                                         ;  0x3BBCF8+0x3C=0x03BBD34
00403558    .  8D55 BC        lea edx,dword ptr ss:[ebp-44]
0040355B    .  8D85 34FEFFFF  lea eax,dword ptr ss:[ebp-1CC]
00403561    .  52             push edx
00403562    .  8D8D F4FEFFFF  lea ecx,dword ptr ss:[ebp-10C]
00403568    .  50             push eax
00403569    .  51             push ecx
0040356A    .  FF15 74104000  call dword ptr ds:[<&MSVBVM60.__vbaVarAnd>]      ;  注册码左边七位转为16进制数 And 常数7
00403570    .  8D95 E4FEFFFF  lea edx,dword ptr ss:[ebp-11C]                   ;  0x96B43F(9876543) And 0x80000007=0x7
00403576    .  50             push eax
00403577    .  52             push edx
00403578    .  FFD6           call esi                                         ;  And 结果加上前面3次Mod结果
0040357A    .  50             push eax                                         ;  0x03BBD34+0x7=0x3BBD3B
0040357B    .  8D85 24FEFFFF  lea eax,dword ptr ss:[ebp-1DC]
00403581    .  8D8D D4FEFFFF  lea ecx,dword ptr ss:[ebp-12C]
00403587    .  50             push eax
00403588    .  51             push ecx
00403589    .  FFD6           call esi                                         ;  上面加法结果再加上常数8
0040358B    .  50             push eax                                         ;  0x03BBD3B+0x9=0x3BBD44
0040358C    .  8D95 14FEFFFF  lea edx,dword ptr ss:[ebp-1EC]
00403592    .  8D85 C4FEFFFF  lea eax,dword ptr ss:[ebp-13C]
00403598    .  52             push edx
00403599    .  50             push eax
0040359A    .  FFD6           call esi                                         ;  加法结果继续加上常数9
0040359C    .  8BD0           mov edx,eax                                      ;  0x03BBD44+0x6390F22=0x674CC66
0040359E    .  8D4B 44        lea ecx,dword ptr ds:[ebx+44]                    ;  将加法结果用10进制表示转为字符串,记为str1
004035A1    .  FF15 0C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]     ;  0x674CC66(108317798)-->"108317798"
004035A7    .  8D8D C4FEFFFF  lea ecx,dword ptr ss:[ebp-13C]
004035AD    .  8D95 D4FEFFFF  lea edx,dword ptr ss:[ebp-12C]
004035B3    .  51             push ecx
004035B4    .  8D85 E4FEFFFF  lea eax,dword ptr ss:[ebp-11C]
004035BA    .  52             push edx
004035BB    .  8D8D 04FFFFFF  lea ecx,dword ptr ss:[ebp-FC]
004035C1    .  50             push eax
004035C2    .  8D95 44FFFFFF  lea edx,dword ptr ss:[ebp-BC]
004035C8    .  51             push ecx
004035C9    .  52             push edx
004035CA    .  6A 05          push 5
004035CC    .  FF15 1C104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>]
004035D2    .  83C4 18        add esp,18
004035D5    .  C785 ACFEFFFF >mov dword ptr ss:[ebp-154],42                    ;  常数1-0x42
004035DF    .  89BD A4FEFFFF  mov dword ptr ss:[ebp-15C],edi
004035E5    .  C785 9CFEFFFF >mov dword ptr ss:[ebp-164],186A0                 ;  常数2-0x186A0
004035EF    .  B8 03000000    mov eax,3
004035F4    .  8D8D A4FEFFFF  lea ecx,dword ptr ss:[ebp-15C]
004035FA    .  8985 94FEFFFF  mov dword ptr ss:[ebp-16C],eax
00403600    .  8985 34FEFFFF  mov dword ptr ss:[ebp-1CC],eax
00403606    .  8985 14FEFFFF  mov dword ptr ss:[ebp-1EC],eax
0040360C    .  8D45 BC        lea eax,dword ptr ss:[ebp-44]
0040360F    .  50             push eax
00403610    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
00403613    .  51             push ecx
00403614    .  52             push edx
00403615    .  C785 8CFEFFFF >mov dword ptr ss:[ebp-174],12                    ;  常数3-0x12
0040361F    .  89BD 84FEFFFF  mov dword ptr ss:[ebp-17C],edi
00403625    .  C785 7CFEFFFF >mov dword ptr ss:[ebp-184],3E8                   ;  常数4-0x3E8
0040362F    .  89BD 74FEFFFF  mov dword ptr ss:[ebp-18C],edi
00403635    .  C785 6CFEFFFF >mov dword ptr ss:[ebp-194],63                    ;  常数5-0x63
0040363F    .  89BD 64FEFFFF  mov dword ptr ss:[ebp-19C],edi
00403645    .  89BD 5CFEFFFF  mov dword ptr ss:[ebp-1A4],edi
0040364B    .  89BD 54FEFFFF  mov dword ptr ss:[ebp-1AC],edi
00403651    .  C785 4CFEFFFF >mov dword ptr ss:[ebp-1B4],5                     ;  常数6-0x5
0040365B    .  89BD 44FEFFFF  mov dword ptr ss:[ebp-1BC],edi
00403661    .  C785 3CFEFFFF >mov dword ptr ss:[ebp-1C4],80000007              ;  常数7-0x80000007
0040366B    .  C785 2CFEFFFF >mov dword ptr ss:[ebp-1D4],9                     ;  常数8-0x9
00403675    .  89BD 24FEFFFF  mov dword ptr ss:[ebp-1DC],edi
0040367B    .  C785 1CFEFFFF >mov dword ptr ss:[ebp-1E4],37FEDD                ;  常数10-0x37FEDD
00403685    .  FF15 C8104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMod>]      ;  以下运算部分,除常数10不同外,与上面相同,
分析略
0040368B    .  50             push eax
0040368C    .  8D85 94FEFFFF  lea eax,dword ptr ss:[ebp-16C]
00403692    .  8D8D 74FFFFFF  lea ecx,dword ptr ss:[ebp-8C]
00403698    .  50             push eax
00403699    .  51             push ecx
0040369A    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  MSVBVM60.__vbaVarMul
004036A0    .  50             push eax
004036A1    .  8D55 BC        lea edx,dword ptr ss:[ebp-44]
004036A4    .  8D85 84FEFFFF  lea eax,dword ptr ss:[ebp-17C]
004036AA    .  52             push edx
004036AB    .  8D8D 64FFFFFF  lea ecx,dword ptr ss:[ebp-9C]
004036B1    .  50             push eax
004036B2    .  51             push ecx
004036B3    .  FF15 C8104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMod>]      ;  MSVBVM60.__vbaVarMod
004036B9    .  50             push eax
004036BA    .  8D95 74FEFFFF  lea edx,dword ptr ss:[ebp-18C]
004036C0    .  8D85 54FFFFFF  lea eax,dword ptr ss:[ebp-AC]
004036C6    .  52             push edx
004036C7    .  50             push eax
004036C8    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  MSVBVM60.__vbaVarMul
004036CE    .  8D8D 44FFFFFF  lea ecx,dword ptr ss:[ebp-BC]
004036D4    .  50             push eax
004036D5    .  51             push ecx
004036D6    .  FFD6           call esi                                         ;  <&MSVBVM60.__vbaVarAdd>
004036D8    .  50             push eax
004036D9    .  8D55 BC        lea edx,dword ptr ss:[ebp-44]
004036DC    .  8D85 64FEFFFF  lea eax,dword ptr ss:[ebp-19C]
004036E2    .  52             push edx
004036E3    .  8D8D 34FFFFFF  lea ecx,dword ptr ss:[ebp-CC]
004036E9    .  50             push eax
004036EA    .  51             push ecx
004036EB    .  FF15 C8104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMod>]      ;  MSVBVM60.__vbaVarMod
004036F1    .  50             push eax
004036F2    .  8D95 54FEFFFF  lea edx,dword ptr ss:[ebp-1AC]
004036F8    .  8D85 24FFFFFF  lea eax,dword ptr ss:[ebp-DC]
004036FE    .  52             push edx
004036FF    .  50             push eax
00403700    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  MSVBVM60.__vbaVarMul
00403706    .  8D8D 44FEFFFF  lea ecx,dword ptr ss:[ebp-1BC]
0040370C    .  50             push eax
0040370D    .  8D95 14FFFFFF  lea edx,dword ptr ss:[ebp-EC]
00403713    .  51             push ecx
00403714    .  52             push edx
00403715    .  FF15 7C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMul>]      ;  MSVBVM60.__vbaVarMul
0040371B    .  50             push eax
0040371C    .  8D85 04FFFFFF  lea eax,dword ptr ss:[ebp-FC]
00403722    .  50             push eax
00403723    .  FFD6           call esi                                         ;  <&MSVBVM60.__vbaVarAdd>
00403725    .  8D4D BC        lea ecx,dword ptr ss:[ebp-44]
00403728    .  50             push eax
00403729    .  8D95 34FEFFFF  lea edx,dword ptr ss:[ebp-1CC]
0040372F    .  51             push ecx
00403730    .  8D85 F4FEFFFF  lea eax,dword ptr ss:[ebp-10C]
00403736    .  52             push edx
00403737    .  50             push eax
00403738    .  FF15 74104000  call dword ptr ds:[<&MSVBVM60.__vbaVarAnd>]      ;  MSVBVM60.__vbaVarAnd
0040373E    .  8D8D E4FEFFFF  lea ecx,dword ptr ss:[ebp-11C]
00403744    .  50             push eax
00403745    .  51             push ecx
00403746    .  FFD6           call esi                                         ;  <&MSVBVM60.__vbaVarAdd>
00403748    .  50             push eax
00403749    .  8D95 24FEFFFF  lea edx,dword ptr ss:[ebp-1DC]
0040374F    .  8D85 D4FEFFFF  lea eax,dword ptr ss:[ebp-12C]
00403755    .  52             push edx
00403756    .  50             push eax
00403757    .  FFD6           call esi                                         ;  <&MSVBVM60.__vbaVarAdd>
00403759    .  8D8D 14FEFFFF  lea ecx,dword ptr ss:[ebp-1EC]
0040375F    .  50             push eax
00403760    .  8D95 C4FEFFFF  lea edx,dword ptr ss:[ebp-13C]
00403766    .  51             push ecx
00403767    .  52             push edx
00403768    .  FFD6           call esi                                         ;  加法结果继续加上常数10
0040376A    .  50             push eax                                         ;  0x03BBD44+0x37FEDD=0x73BC21
0040376B    .  8D85 B4FEFFFF  lea eax,dword ptr ss:[ebp-14C]
00403771    .  50             push eax
00403772    .  FF15 AC104000  call dword ptr ds:[<&MSVBVM60.#573>]             ;  加法结果以16进制表示转为字符串,记为str2
00403778    .  8D4B 34        lea ecx,dword ptr ds:[ebx+34]                    ;  0x73BC21-->"73BC21"
0040377B    .  8D95 B4FEFFFF  lea edx,dword ptr ss:[ebp-14C]
00403781    .  FF15 0C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]     
00403787    .  8D8D B4FEFFFF  lea ecx,dword ptr ss:[ebp-14C]
0040378D    .  8B35 1C104000  mov esi,dword ptr ds:[<&MSVBVM60.__vbaFreeVarLis>
00403793    .  8D95 C4FEFFFF  lea edx,dword ptr ss:[ebp-13C]
00403799    .  51             push ecx
0040379A    .  8D85 D4FEFFFF  lea eax,dword ptr ss:[ebp-12C]
004037A0    .  52             push edx
004037A1    .  8D8D E4FEFFFF  lea ecx,dword ptr ss:[ebp-11C]
004037A7    .  50             push eax
004037A8    .  8D95 04FFFFFF  lea edx,dword ptr ss:[ebp-FC]
004037AE    .  51             push ecx
004037AF    .  8D85 44FFFFFF  lea eax,dword ptr ss:[ebp-BC]
004037B5    .  52             push edx
004037B6    .  50             push eax
004037B7    .  6A 06          push 6
004037B9    .  FFD6           call esi                                        
004037BB    .  83C4 1C        add esp,1C
004037BE    .  8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
004037C4    .  8D4D 84        lea ecx,dword ptr ss:[ebp-7C]
004037C7       C785 ACFEFFFF >mov dword ptr ss:[ebp-154],lhl-crac.004025EC     ;  固定字符串1-"pyg"
004037D1    .  C785 A4FEFFFF >mov dword ptr ss:[ebp-15C],8
004037DB    .  FF15 C4104000  call dword ptr ds:[<&MSVBVM60.__vbaVarDup>]      
004037E1    .  8B0B           mov ecx,dword ptr ds:[ebx]
004037E3    .  8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
004037E9    .  8D45 84        lea eax,dword ptr ss:[ebp-7C]
004037EC    .  52             push edx
004037ED    .  50             push eax
004037EE    .  53             push ebx
004037EF    .  FF91 FC060000  call dword ptr ds:[ecx+6FC]                      ;  此CALL将"pyg"每位字符的ASCII值的16进制形式
连接成字符串
004037F5    .  8D4B 54        lea ecx,dword ptr ds:[ebx+54]                    ;  'p'->0x70,'y'->79,'g'->67  ==>"707967",记为
str3
004037F8    .  8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
004037FE    .  FF15 0C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]    
00403804    .  8D8D 74FFFFFF  lea ecx,dword ptr ss:[ebp-8C]
0040380A    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
0040380D    .  51             push ecx
0040380E    .  52             push edx
0040380F    .  57             push edi
00403810    .  FFD6           call esi                                        
00403812    .  83C4 0C        add esp,0C
00403815    .  8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
0040381B    .  8D4D 84        lea ecx,dword ptr ss:[ebp-7C]
0040381E    .  C785 ACFEFFFF >mov dword ptr ss:[ebp-154],lhl-crac.004025F8     ;  固定字符串2-"lhl"
00403828    .  C785 A4FEFFFF >mov dword ptr ss:[ebp-15C],8
00403832    .  FF15 C4104000  call dword ptr ds:[<&MSVBVM60.__vbaVarDup>]     
00403838    .  8B03           mov eax,dword ptr ds:[ebx]
0040383A    .  8D8D 74FFFFFF  lea ecx,dword ptr ss:[ebp-8C]
00403840    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
00403843    .  51             push ecx
00403844    .  52             push edx
00403845    .  53             push ebx
00403846    .  FF90 F8060000  call dword ptr ds:[eax+6F8]                      ;  同上面CALL,"lhl"--->"108104108",记为str4
0040384C    .  8D4B 64        lea ecx,dword ptr ds:[ebx+64]
0040384F    .  8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
00403855    .  FF15 0C104000  call dword ptr ds:[<&MSVBVM60.__vbaVarMove>]    
0040385B    .  8D85 74FFFFFF  lea eax,dword ptr ss:[ebp-8C]
00403861    .  8D4D 84        lea ecx,dword ptr ss:[ebp-7C]
00403864    .  50             push eax
00403865    .  51             push ecx
00403866    .  57             push edi
00403867    .  FFD6           call esi                                        
00403869    .  83C4 0C        add esp,0C
0040386C    .  8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
00403872    .  8D43 64        lea eax,dword ptr ds:[ebx+64]
00403875    .  C785 7CFFFFFF >mov dword ptr ss:[ebp-84],1
0040387F    .  52             push edx
00403880    .  6A 05          push 5                                           ;  常数,5
00403882    .  50             push eax
00403883    .  8D45 A0        lea eax,dword ptr ss:[ebp-60]
00403886    .  50             push eax
00403887    .  89BD 74FFFFFF  mov dword ptr ss:[ebp-8C],edi
0040388D    .  FF15 94104000  call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]  
00403893    .  50             push eax                                         ;  字符串str4--"108104108"
00403894    .  FF15 50104000  call dword ptr ds:[<&MSVBVM60.#631>]             ;  rtcMidCharBstr,取字符串str4第5位字符
0040389A    .  8BD0           mov edx,eax                                      ;  d EAX=0x30('0')
0040389C    .  8D4D 98        lea ecx,dword ptr ss:[ebp-68]
0040389F    .  FF15 D8104000  call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]    
004038A5    .  8B4D 98        mov ecx,dword ptr ss:[ebp-68]
004038A8    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
004038AB    .  52             push edx
004038AC    .  8D43 44        lea eax,dword ptr ds:[ebx+44]
004038AF    .  6A 05          push 5
004038B1    .  50             push eax
004038B2    .  8D45 A8        lea eax,dword ptr ss:[ebp-58]
004038B5    .  C745 8C 010000>mov dword ptr ss:[ebp-74],1
004038BC    .  50             push eax
004038BD    .  897D 84        mov dword ptr ss:[ebp-7C],edi
004038C0    .  898D FCFDFFFF  mov dword ptr ss:[ebp-204],ecx
004038C6    .  C745 98 000000>mov dword ptr ss:[ebp-68],0
004038CD    .  FF15 94104000  call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
004038D3    .  50             push eax                                         ;  字符串str1--"108317798"
004038D4    .  FF15 50104000  call dword ptr ds:[<&MSVBVM60.#631>]             ;  rtcMidCharBstr,取字符串str1第5位字符
004038DA    .  8BD0           mov edx,eax                                      ;  d EAX=0x31('1')
004038DC    .  8D4D A4        lea ecx,dword ptr ss:[ebp-5C]
004038DF    .  FF15 D8104000  call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]   
004038E5    .  50             push eax
004038E6    .  FF15 9C104000  call dword ptr ds:[<&MSVBVM60.__vbaR8Str>]       ;  字符串转为浮点数,'1'-->1.0
004038EC    .  8B95 FCFDFFFF  mov edx,dword ptr ss:[ebp-204]
004038F2    .  8D4D 9C        lea ecx,dword ptr ss:[ebp-64]
004038F5    .  DD9D F4FDFFFF  fstp qword ptr ss:[ebp-20C]
004038FB    .  FF15 D8104000  call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]    
00403901    .  50             push eax
00403902    .  FF15 9C104000  call dword ptr ds:[<&MSVBVM60.__vbaR8Str>]       ;  字符串转为浮点数,'0'-->0.0
00403908    .  DC9D F4FDFFFF  fcomp qword ptr ss:[ebp-20C]                     ;  比较两个值是否相等
0040390E    .  C785 F0FDFFFF >mov dword ptr ss:[ebp-210],1
00403918    .  DFE0           fstsw ax
0040391A    .  F6C4 40        test ah,40
0040391D    .  75 0A          jnz short lhl-crac.00403929
0040391F    .  C785 F0FDFFFF >mov dword ptr ss:[ebp-210],0
00403929    >  8D4D 98        lea ecx,dword ptr ss:[ebp-68]
0040392C    .  8D55 9C        lea edx,dword ptr ss:[ebp-64]
0040392F    .  51             push ecx
00403930    .  8D45 A0        lea eax,dword ptr ss:[ebp-60]
00403933    .  52             push edx
00403934    .  8D4D A4        lea ecx,dword ptr ss:[ebp-5C]
00403937    .  50             push eax
00403938    .  8D55 A8        lea edx,dword ptr ss:[ebp-58]
0040393B    .  51             push ecx
0040393C    .  52             push edx
0040393D    .  6A 05          push 5
0040393F    .  FF15 B0104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] 
00403945    .  8D85 74FFFFFF  lea eax,dword ptr ss:[ebp-8C]
0040394B    .  8D4D 84        lea ecx,dword ptr ss:[ebp-7C]
0040394E    .  50             push eax
0040394F    .  51             push ecx
00403950    .  57             push edi
00403951    .  FFD6           call esi
00403953    .  8B85 F0FDFFFF  mov eax,dword ptr ss:[ebp-210]
00403959    .  83C4 24        add esp,24
0040395C    .  F7D8           neg eax
0040395E    .  66:85C0        test ax,ax
00403961       0F84 6A020000  je lhl-crac.00403BD1                             ;  不等则Over,暴破点2,Nop掉
00403967    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
0040396A    .  8D43 34        lea eax,dword ptr ds:[ebx+34]
0040396D    .  52             push edx
0040396E    .  6A 05          push 5
00403970    .  50             push eax
00403971    .  8D45 A8        lea eax,dword ptr ss:[ebp-58]
00403974    .  50             push eax
00403975    .  897D 8C        mov dword ptr ss:[ebp-74],edi
00403978    .  897D 84        mov dword ptr ss:[ebp-7C],edi
0040397B    .  89BD 7CFFFFFF  mov dword ptr ss:[ebp-84],edi
00403981    .  89BD 74FFFFFF  mov dword ptr ss:[ebp-8C],edi
00403987    .  FF15 94104000  call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]  
0040398D    .  50             push eax                                         ;  字符串str2--"73BC21"
0040398E    .  FF15 50104000  call dword ptr ds:[<&MSVBVM60.#631>]             ;  rtcMidCharBstr,从字符串str2第5位开始取字符
至结束
00403994    .  8BD0           mov edx,eax                                      ;  得到字符串"21"
00403996    .  8D4D A0        lea ecx,dword ptr ss:[ebp-60]
00403999    .  FF15 D8104000  call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]    
0040399F    .  8D8D 74FFFFFF  lea ecx,dword ptr ss:[ebp-8C]
004039A5    .  50             push eax
004039A6    .  51             push ecx
004039A7    .  8D43 54        lea eax,dword ptr ds:[ebx+54]
004039AA    .  6A 05          push 5
004039AC    .  8D55 A4        lea edx,dword ptr ss:[ebp-5C]
004039AF    .  50             push eax
004039B0    .  52             push edx
004039B1    .  FF15 94104000  call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   
004039B7    .  50             push eax                                         ;  字符串str3--"707967"
004039B8    .  FF15 50104000  call dword ptr ds:[<&MSVBVM60.#631>]             ;  rtcMidCharBstr,从字符串str3第5位开始取字符
至结束
004039BE    .  8BD0           mov edx,eax                                      ;  得到字符串"67"
004039C0    .  8D4D 9C        lea ecx,dword ptr ss:[ebp-64]
004039C3    .  FF15 D8104000  call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]    
004039C9    .  50             push eax
004039CA    .  FF15 5C104000  call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]      ;  比较取出的两个字符串是否相等
004039D0    .  F7D8           neg eax
004039D2    .  1BC0           sbb eax,eax
004039D4    .  8D4D A0        lea ecx,dword ptr ss:[ebp-60]
004039D7    .  40             inc eax
004039D8    .  8D55 A4        lea edx,dword ptr ss:[ebp-5C]
004039DB    .  F7D8           neg eax
004039DD    .  66:8985 10FEFF>mov word ptr ss:[ebp-1F0],ax
004039E4    .  8D45 9C        lea eax,dword ptr ss:[ebp-64]
004039E7    .  50             push eax
004039E8    .  51             push ecx
004039E9    .  8D45 A8        lea eax,dword ptr ss:[ebp-58]
004039EC    .  52             push edx
004039ED    .  50             push eax
004039EE    .  6A 04          push 4
004039F0    .  FF15 B0104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] 
004039F6    .  8D8D 74FFFFFF  lea ecx,dword ptr ss:[ebp-8C]
004039FC    .  8D55 84        lea edx,dword ptr ss:[ebp-7C]
004039FF    .  51             push ecx
00403A00    .  52             push edx
00403A01    .  57             push edi
00403A02    .  FFD6           call esi
00403A04    .  83C4 20        add esp,20
00403A07    .  66:83BD 10FEFF>cmp word ptr ss:[ebp-1F0],0
00403A0F      /0F84 DB000000  je lhl-crac.00403AF0                             ;  不等则Over,暴破点3,Nop掉
00403A15    . |8B03           mov eax,dword ptr ds:[ebx]
00403A17    . |53             push ebx
00403A18    . |FF90 FC020000  call dword ptr ds:[eax+2FC]
00403A1E    . |8D4D 94        lea ecx,dword ptr ss:[ebp-6C]
00403A21    . |50             push eax
00403A22    . |51             push ecx
00403A23    . |FF15 40104000  call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]      
00403A29    . |8BF8           mov edi,eax
00403A2B    . |6A FF          push -1
00403A2D    . |57             push edi
00403A2E    . |8B17           mov edx,dword ptr ds:[edi]
00403A30    . |FF92 8C000000  call dword ptr ds:[edx+8C]
00403A36    . |85C0           test eax,eax
00403A38    . |DBE2           fclex
00403A3A    . |7D 12          jge short lhl-crac.00403A4E
00403A3C    . |68 8C000000    push 8C
00403A41    . |68 00264000    push lhl-crac.00402600
00403A46    . |57             push edi
00403A47    . |50             push eax
00403A48    . |FF15 34104000  call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>
00403A4E    > |8D4D 94        lea ecx,dword ptr ss:[ebp-6C]
00403A51    . |FF15 F0104000  call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]     
00403A57    . |B9 04000280    mov ecx,80020004
00403A5C    . |B8 0A000000    mov eax,0A
00403A61    . |898D 5CFFFFFF  mov dword ptr ss:[ebp-A4],ecx
00403A67    . |898D 6CFFFFFF  mov dword ptr ss:[ebp-94],ecx
00403A6D    . |898D 7CFFFFFF  mov dword ptr ss:[ebp-84],ecx
00403A73    . |8D95 A4FEFFFF  lea edx,dword ptr ss:[ebp-15C]
00403A79    . |8D4D 84        lea ecx,dword ptr ss:[ebp-7C]
00403A7C    . |8985 54FFFFFF  mov dword ptr ss:[ebp-AC],eax
00403A82    . |8985 64FFFFFF  mov dword ptr ss:[ebp-9C],eax
00403A88    . |8985 74FFFFFF  mov dword ptr ss:[ebp-8C],eax
00403A8E    . |C785 ACFEFFFF >mov dword ptr ss:[ebp-154],lhl-crac.00402614
00403A98    . |C785 A4FEFFFF >mov dword ptr ss:[ebp-15C],8
00403AA2    . |FF15 C4104000  call dword ptr ds:[<&MSVBVM60.__vbaVarDup>]   
00403AA8    . |8D85 54FFFFFF  lea eax,dword ptr ss:[ebp-AC]
00403AAE    . |8D8D 64FFFFFF  lea ecx,dword ptr ss:[ebp-9C]
00403AB4    . |50             push eax
00403AB5    . |8D95 74FFFFFF  lea edx,dword ptr ss:[ebp-8C]
00403ABB    . |51             push ecx
00403ABC    . |52             push edx
00403ABD    . |8D45 84        lea eax,dword ptr ss:[ebp-7C]
00403AC0    . |6A 00          push 0
00403AC2    . |50             push eax
00403AC3    . |FF15 3C104000  call dword ptr ds:[<&MSVBVM60.#595>]             ;  rtcMsgBox,弹出"通过第3关"提示
00403AC9    . |8D8D 54FFFFFF  lea ecx,dword ptr ss:[ebp-AC]
00403ACF    . |8D95 64FFFFFF  lea edx,dword ptr ss:[ebp-9C]
00403AD5    . |51             push ecx
00403AD6    . |8D85 74FFFFFF  lea eax,dword ptr ss:[ebp-8C]
00403ADC    . |52             push edx
弹出"通过第3关"提示后,"确定"按钮也变为可点击,点击按钮弹出"你比我菜!"提示。
命令栏输入:bp rtcMsgBox,回车,点击"确定"按钮,中断:
660DC5F3 M>  55               push ebp
660DC5F4     8BEC             mov ebp,esp
660DC5F6     83EC 4C          sub esp,4C
660DC5F9     8B4D 14          mov ecx,dword ptr ss:[ebp+14]
观察堆栈友好提示:
0012F3C8    00403023   返回到 lhl-crac.00403023 来自 MSVBVM60.rtcMsgBox
0012F3CC    0012F464
Alt+F9返回,点击提示窗口中的"确定"按钮,来到:
00403023    .  8D45 AC        lea eax,dword ptr ss:[ebp-54]                    ;  Alt+F9返回来到这里
00403026    .  8D4D BC        lea ecx,dword ptr ss:[ebp-44]
00403029    .  50             push eax
0040302A    .  8D55 CC        lea edx,dword ptr ss:[ebp-34]
0040302D    .  51             push ecx
向上查找,来到00402F20处F2下断,再次点击"确定"按钮,立即中断:
00402F20    > \55             push ebp                                         ;  F2在此下断,中断后F8往下走
00402F21    .  8BEC           mov ebp,esp
00402F23    .  83EC 0C        sub esp,0C
00402F26    .  68 56114000    push <jmp.&MSVBVM60.__vbaExceptHandler>          
00402F2B    .  64:A1 00000000 mov eax,dword ptr fs:[0]
00402F31    .  50             push eax
00402F32    .  64:8925 000000>mov dword ptr fs:[0],esp
00402F39    .  81EC 88000000  sub esp,88
00402F3F    .  53             push ebx
00402F40    .  56             push esi
00402F41    .  57             push edi
00402F42    .  8965 F4        mov dword ptr ss:[ebp-C],esp
00402F45    .  C745 F8 181140>mov dword ptr ss:[ebp-8],lhl-crac.00401118
00402F4C    .  8B75 08        mov esi,dword ptr ss:[ebp+8]
00402F4F    .  8BC6           mov eax,esi
00402F51    .  83E0 01        and eax,1
00402F54    .  8945 FC        mov dword ptr ss:[ebp-4],eax
00402F57    .  83E6 FE        and esi,FFFFFFFE
00402F5A    .  56             push esi
00402F5B    .  8975 08        mov dword ptr ss:[ebp+8],esi
00402F5E    .  8B0E           mov ecx,dword ptr ds:[esi]
00402F60    .  FF51 04        call dword ptr ds:[ecx+4]
00402F63    .  8D56 64        lea edx,dword ptr ds:[esi+64]
00402F66    .  33FF           xor edi,edi
00402F68    .  52             push edx
00402F69    .  897D DC        mov dword ptr ss:[ebp-24],edi
00402F6C    .  897D CC        mov dword ptr ss:[ebp-34],edi
00402F6F    .  897D BC        mov dword ptr ss:[ebp-44],edi
00402F72    .  897D AC        mov dword ptr ss:[ebp-54],edi
00402F75    .  897D 9C        mov dword ptr ss:[ebp-64],edi
00402F78    .  FF15 8C104000  call dword ptr ds:[<&MSVBVM60.__vbaR8ErrVar>]    
00402F7E    .  8B1D 60104000  mov ebx,dword ptr ds:[<&MSVBVM60.__vbaVarTstEq>] 
00402F84    .  8D46 44        lea eax,dword ptr ds:[esi+44]                    ;  字符串str4"108104108"转为浮点数
00402F87    .  DD5D A4        fstp qword ptr ss:[ebp-5C]                       ;  st=108104108.00000000000
00402F8A    .  8D4D 9C        lea ecx,dword ptr ss:[ebp-64]
00402F8D    .  50             push eax
00402F8E    .  51             push ecx
00402F8F    .  C745 9C 058000>mov dword ptr ss:[ebp-64],8005                   ;  字符串str1"108317798"-->108317798.0
00402F96    .  FFD3           call ebx                                         ;  __vbaVarTstEq,与字符串str1表示的浮点数比较
00402F98    .  66:85C0        test ax,ax
00402F9B    .  74 39          je short lhl-crac.00402FD6                       ;  不等则Over,暴破点4,Nop掉
00402F9D    .  8D56 54        lea edx,dword ptr ds:[esi+54]
00402FA0    .  52             push edx
00402FA1    .  FF15 8C104000  call dword ptr ds:[<&MSVBVM60.__vbaR8ErrVar>]    
00402FA7    .  DD5D A4        fstp qword ptr ss:[ebp-5C]                       ;  字符串str3"707967"转为浮点数
00402FAA    .  8D46 34        lea eax,dword ptr ds:[esi+34]                    ;  st=707967.0
00402FAD    .  8D4D 9C        lea ecx,dword ptr ss:[ebp-64]
00402FB0    .  50             push eax
00402FB1    .  51             push ecx
00402FB2    .  C745 9C 058000>mov dword ptr ss:[ebp-64],8005                   ;  字符串str2"73BC21"-->7584801.0
00402FB9    .  FFD3           call ebx                                         ;  __vbaVarTstEq,与字符串str2表示的浮点数比较
00402FBB    .  66:85C0        test ax,ax
00402FBE    .  74 7E          je short lhl-crac.0040303E                       ;  不等则Over,暴破点5,Nop掉
00402FC0    .  68 68254000    push lhl-crac.00402568
00402FC5    .  56             push esi
00402FC6    .  68 7C254000    push lhl-crac.0040257C
-----------------------------------------------------------------------------------------------
【破解总结】
1.注册码长度应大于等于7位, 则通过第一关。
2.取注册码前7位进行2次运算,每次运算用到9个常数。2次运算过程中除最后一个常数不同外,其它常数
及运算过程相同,第一次运算结果用10进制整数表示转为字符串,记为str1;第二次运算结果用16进制整数表示转为字符串,记为str2.
3.内置两个固定字符串,"pyg","lhl",分别依次取两个固定字符串每位字符的ASCII值用16进制数表示转为字符串,记为str3,str4.
4.取字符串str1和str4的第5位字符,相等则通过第二关。
5.从取字符串str2和str3第5位字符开始取直到字符串结束,相等则通过第三关。
6.将字符串str1和str4,str2和str3转为浮点数分别比较,相等则通过第四关。
一组可用注册码:
===================
注册码:1000135
===================
暴破更改以下位置:
00403333             je lhl-crac.00403CA9                             ;  je===>Nop
00403961             je lhl-crac.00403BD1                             ;  je===>Nop
00403A0F             je lhl-crac.00403AF0                             ;  je===>Nop
00402F9B             je short lhl-crac.00402FD6                       ;  je===>Nop
00402FBE             je short lhl-crac.0040303E                       ;  je===>Nop
【VB注册机源码】
Private Sub Generate_Click()
On Error Resume Next
Dim i As Long
Dim n1 As Long
Dim n2 As Long
Dim num1 As Long
Dim num2 As Long
Dim num3 As Long
Dim num4 As Long
Dim temp As Long
temp = (9999999 - 1000000) * Rnd() + 1000000
For i = temp To 9999999
    num1 = (i Mod &H42) * &H186A0
    num2 = (i Mod &H12) * &H3E8
    num3 = (i Mod &H63) * 5 * 2
    num4 = i And &H80000007
    n1 = num1 + num2 + num3 + num4 + 9 + &H6390F22
    n2 = num1 + num2 + num3 + num4 + 9 + &H37FEDD
    
    If (n1 = 108104108) And (n2 = 7371111) Then GoTo done  '0x707969= 7371111
Next i
       
done:
  
  Text1 = i
End Sub
-----------------------------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 hrbx 于 2006-5-22 12:59 编辑 ]
 | 
 
x本帖子中包含更多资源您需要 登录 才可以下载或查看,没有账号?加入我们 
  |