- UID
 - 26865
 
 注册时间2007-2-17
阅读权限20
最后登录1970-1-1
以武会友 
   
 
 
 
该用户从未签到  
 | 
 
【破文标题】**背词王 3.7算法分析 
【破文作者】dgrzh(交响诗篇) 
【破解工具】OD PEiD 
【破解平台】XP SP2  
【软件名称】**背词王 3.7 
【保护方式】序列号  
【破解声明】新手,不对之处还请大家多多指教~ 
【破解过程】PEiD查没壳,编程语言Microsoft Visual Basic 5.0 / 6.0 
 
运行程序,右健点-菜单-用户设置-版本注册  显示: 
       前码:      后码: 
注册  91275844    12345678(前码是程序自动显示的,输入12345678假后码) 
                   注册按钮<-点这里(提示:注册码错误) 
用字符串查找,没有找到任何可用的线索,于是查找-当前模块中的名称,找到MSVBVM60.__vbaStrCmp,在每个参考上设置断点。 
下好断点,F9运行                                                
0068382F     .  FF15 C0104000    call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]      ;  断在这里,然后一路F8        
00683835     .  8BF8             mov edi,eax 
00683837     .  8D95 C4FEFFFF    lea edx,dword ptr ss:[ebp-13C]                    
0068383D     .  F7DF             neg edi 
0068383F     .  8D85 C8FEFFFF    lea eax,dword ptr ss:[ebp-138] 
00683845     .  52               push edx 
00683846     .  1BFF             sbb edi,edi 
00683848     .  8D8D CCFEFFFF    lea ecx,dword ptr ss:[ebp-134] 
0068384E     .  50               push eax 
0068384F     .  51               push ecx 
00683850     .  F7DF             neg edi 
00683852     .  6A 03            push 3 
00683854     .  F7DF             neg edi 
省略代码 
................................................................................... 
................................................................................... 
7339DE99      8945 E4            mov dword ptr ss:[ebp-1C],eax 
7339DE9C      85C0               test eax,eax 
7339DE9E      7C 51              jl short MSVBVM60.7339DEF1 
7339DEA0      6A 00              push 0 
7339DEA2      6A 00              push 0 
7339DEA4      68 69100000        push 1069 
7339DEA9      FF15 C8103973      call dword ptr ds:[<&KERNEL32.GetCurrentThreadId>; kernel32.GetCurrentThreadId 
7339DEAF      50                 push eax 
7339DEB0      FF15 28163973      call dword ptr ds:[<&USER32.PostThreadMessageA>] ; USER32.PostThreadMessageA 
7339DEB6      8D45 9C            lea eax,dword ptr ss:[ebp-64] 
7339DEB9      50                 push eax 
7339DEBA      8BCE               mov ecx,esi 
7339DEBC      E8 6159FFFF        call MSVBVM60.73393822 
7339DEC1      85C0               test eax,eax 
7339DEC3      74 14              je short MSVBVM60.7339DED9 
7339DEC5      8B45 9C            mov eax,dword ptr ss:[ebp-64] 
7339DEC8      8B88 20050000      mov ecx,dword ptr ds:[eax+520] 
7339DECE      85C9               test ecx,ecx 
7339DED0      74 07              je short MSVBVM60.7339DED9 
7339DED2      6A FF              push -1 
7339DED4      E8 366C0000        call MSVBVM60.733A4B0F                              ;  F8来到这里程序运行起来。 
右健点-菜单-用户设置-版本注册  显示: 
       前码:      后码: 
注册  91275844    12345678(前码是程序自动显示的,输入12345678假后码) 
                   注册按钮<-点这里 
........................................................................................................ 
00687667   .  FF15 C0104000 call    dword ptr [<&MSVBVM60.__vbaStrCm>;  MSVBVM60.__vbaStrCmp  断在这里 
0068766D   .  8BF0          mov     esi, eax 
0068766F   .  8D4D D8       lea     ecx, dword ptr [ebp-28] 
00687672   .  F7DE          neg     esi 
00687674   .  1BF6          sbb     esi, esi 
00687676   .  F7DE          neg     esi 
00687678   .  F7DE          neg     esi 
0068767A   .  FF15 B8114000 call    dword ptr [<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr 
...................................................................................................... 
看堆栈显示: 
0012D7EC   001F3C44  UNICODE "15527657" 
0012D7F0   001F3BE4  UNICODE "12345678" 
明码比较,关键地方找到了。其实下好断点,按两次F9也会断在这里,但是程序就没有响应。OD就无法继续调试。 
取消00687667处的断点,来到段首 
006872A6     .  68 96204000      push <jmp.&MSVBVM60.__vbaExceptHandler>   这里下F2断点 
下好断点后,重载OD,F9一次断在0068382F这里,一路F8重复上面过程,来到7339DED4程序运行起来 
输入假后码,点注册后断在006872A6这里(其实在按一次F9也会断在这里,但是程序就没有响应。不明白为什么。) 
==================================================== 
==================================================== 
006872A6     .  68 96204000      push <jmp.&MSVBVM60.__vbaExceptHandler>          ; 断在这里 
006872AB     .  64:A1 00000000   mov eax,dword ptr fs:[0] 
006872B1     .  50               push eax 
006872B2     .  64:8925 00000000 mov dword ptr fs:[0],esp 
006872B9     .  81EC 28010000    sub esp,128 
006872BF     .  53               push ebx 
006872C0     .  56               push esi 
006872C1     .  57               push edi 
006872C2     .  8965 F8          mov dword ptr ss:[ebp-8],esp 
006872C5     .  C745 FC A01D4000 mov dword ptr ss:[ebp-4],Super背?00401DA0 
006872CC     .  A1 D0D06800      mov eax,dword ptr ds:[68D0D0] 
006872D1     .  33FF             xor edi,edi 
006872D3     .  3BC7             cmp eax,edi                                      ;  (初始化 cpu 选择状态) 
006872D5     .  897D E8          mov dword ptr ss:[ebp-18],edi 
006872D8     .  897D E4          mov dword ptr ss:[ebp-1C],edi 
006872DB     .  897D D8          mov dword ptr ss:[ebp-28],edi 
006872DE     .  897D D4          mov dword ptr ss:[ebp-2C],edi 
006872E1     .  897D D0          mov dword ptr ss:[ebp-30],edi 
006872E4     .  897D C0          mov dword ptr ss:[ebp-40],edi 
006872E7     .  897D B0          mov dword ptr ss:[ebp-50],edi 
006872EA     .  897D A0          mov dword ptr ss:[ebp-60],edi 
006872ED     .  897D 90          mov dword ptr ss:[ebp-70],edi 
006872F0     .  897D 80          mov dword ptr ss:[ebp-80],edi 
006872F3     .  89BD 70FFFFFF    mov dword ptr ss:[ebp-90],edi 
006872F9     .  89BD 60FFFFFF    mov dword ptr ss:[ebp-A0],edi 
006872FF     .  89BD 50FFFFFF    mov dword ptr ss:[ebp-B0],edi 
00687305     .  89BD 40FFFFFF    mov dword ptr ss:[ebp-C0],edi 
0068730B     .  89BD 20FFFFFF    mov dword ptr ss:[ebp-E0],edi 
00687311     .  89BD F0FEFFFF    mov dword ptr ss:[ebp-110],edi 
00687317     .  75 10            jnz short Super背?00687329 
00687319     .  68 D0D06800      push Super背?0068D0D0 
0068731E     .  68 60FF4200      push Super背?0042FF60 
00687323     .  FF15 48114000    call dword ptr ds:[<&MSVBVM60.__vbaNew2>]        ;  MSVBVM60.__vbaNew2 
00687329     >  8B35 D0D06800    mov esi,dword ptr ds:[68D0D0] 
0068732F     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
00687332     .  51               push ecx 
00687333     .  56               push esi 
00687334     .  8B06             mov eax,dword ptr ds:[esi] 
00687336     .  FF90 F8060000    call dword ptr ds:[eax+6F8]                       ;  将硬盘序列号转换为前码91275844 
0068733C     .  3BC7             cmp eax,edi 
0068733E     .  DBE2             fclex 
00687340     .  7D 12            jge short Super背?00687354 
00687342     .  68 F8060000      push 6F8 
00687347     .  68 B8344300      push Super背?004334B8 
0068734C     .  56               push esi 
0068734D     .  50               push eax 
0068734E     .  FF15 5C104000    call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>;  MSVBVM60.__vbaHresultCheckObj 
00687354     >  8B55 D8          mov edx,dword ptr ss:[ebp-28]                    ;  前码 
00687357     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
0068735A     .  897D D8          mov dword ptr ss:[ebp-28],edi 
0068735D     .  FF15 94114000    call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]     ;  MSVBVM60.__vbaStrMove 
00687363     .  8B55 E4          mov edx,dword ptr ss:[ebp-1C]                    ;  前码 
00687366     .  52               push edx 
00687367     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  MSVBVM60.__vbaLenBstr 
0068736D     .  8BC8             mov ecx,eax                                      ;  前码长度 
0068736F     .  FF15 C8104000    call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]        ;  MSVBVM60.__vbaI2I4 
00687375     .  8B1D 3C104000    mov ebx,dword ptr ds:[<&MSVBVM60.#516>]          ;  MSVBVM60.rtcAnsiValueBstr 
0068737B     .  8985 DCFEFFFF    mov dword ptr ss:[ebp-124],eax 
00687381     .  BE 01000000      mov esi,1 
00687386     >  66:3BB5 DCFEFFFF cmp si,word ptr ss:[ebp-124]                     ;   计数值同前码长度比较 
0068738D     .  0F8F 87000000    jg Super背?0068741A                              ;   计数值大于前码长度跳出循环 
00687393     .  8D45 E4          lea eax,dword ptr ss:[ebp-1C] 
00687396     .  8D4D C0          lea ecx,dword ptr ss:[ebp-40] 
00687399     .  0FBFD6           movsx edx,si 
0068739C     .  8985 48FFFFFF    mov dword ptr ss:[ebp-B8],eax 
006873A2     .  51               push ecx 
006873A3     .  8D85 40FFFFFF    lea eax,dword ptr ss:[ebp-C0] 
006873A9     .  52               push edx 
006873AA     .  8D4D B0          lea ecx,dword ptr ss:[ebp-50] 
006873AD     .  50               push eax 
006873AE     .  51               push ecx 
006873AF     .  C745 C8 01000000 mov dword ptr ss:[ebp-38],1 
006873B6     .  C745 C0 02000000 mov dword ptr ss:[ebp-40],2 
006873BD     .  C785 40FFFFFF 08>mov dword ptr ss:[ebp-C0],4008 
006873C7     .  FF15 AC104000    call dword ptr ds:[<&MSVBVM60.#632>]             ;  MSVBVM60.rtcMidCharVar 
006873CD     .  8D55 B0          lea edx,dword ptr ss:[ebp-50] 
006873D0     .  8D45 D8          lea eax,dword ptr ss:[ebp-28] 
006873D3     .  52               push edx 
006873D4     .  50               push eax 
006873D5     .  FF15 30114000    call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ;  逐位取前码的值并转换为它的ASCII码值 
006873DB     .  50               push eax                                         ;   
006873DC     .  FFD3             call ebx                                         ;   
006873DE     .  66:03C7          add ax,di                                        ;  将每位ASCII码值累加结果送ax 
006873E1     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
006873E4     .  0F80 28030000    jo Super背?00687712 
006873EA     .  8BF8             mov edi,eax                                      ;  累加结果 
006873EC     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
006873F2     .  8D4D B0          lea ecx,dword ptr ss:[ebp-50] 
006873F5     .  8D55 C0          lea edx,dword ptr ss:[ebp-40] 
006873F8     .  51               push ecx 
006873F9     .  52               push edx 
006873FA     .  6A 02            push 2 
006873FC     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
00687402     .  B8 01000000      mov eax,1                                        ;   计数器赋值为1 
00687407     .  83C4 0C          add esp,0C 
0068740A     .  66:03C6          add ax,si                                        ;  每循环一次计数值加1 
0068740D     .  0F80 FF020000    jo Super背?00687712 
00687413     .  8BF0             mov esi,eax                                      ;   
00687415     .^ E9 6CFFFFFF      jmp Super背?00687386 
0068741A     >  66:8BC7          mov ax,di                                        ;  累加结果 
0068741D     .  66:B9 0900       mov cx,9                                         ;   
00687421     .  66:6BC0 13       imul ax,ax,13                                       累加结果乘以13送ax 
00687425     .  0F80 E7020000    jo Super背?00687712 
0068742B     .  66:99            cwd 
0068742D     .  66:F7F9          idiv cx                                          ;   
00687430     .  8955 DC          mov dword ptr ss:[ebp-24],edx                       ax除9取余存入ss:[ebp-24]中 
00687433     .  8B55 E4          mov edx,dword ptr ss:[ebp-1C] 
00687436     .  52               push edx                                         ;  前码 
00687437     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  前码长度 
0068743D     .  8BC8             mov ecx,eax                                      ;   
0068743F     .  FF15 C8104000    call dword ptr ds:[<&MSVBVM60.__vbaI2I4>]        ;  MSVBVM60.__vbaI2I4 
00687445     .  8985 D4FEFFFF    mov dword ptr ss:[ebp-12C],eax 
0068744B     .  BE 01000000      mov esi,1 
00687450     >  66:3BB5 D4FEFFFF cmp si,word ptr ss:[ebp-12C]                     ;  计数值同前码长度比较 
00687457     .  0F8F A9010000    jg Super背?00687606                              ;   大于前码长度跳出循环 
0068745D     .  8B45 E8          mov eax,dword ptr ss:[ebp-18] 
00687460     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
00687463     .  0FBFFE           movsx edi,si 
00687466     .  8D55 C0          lea edx,dword ptr ss:[ebp-40] 
00687469     .  8985 F8FEFFFF    mov dword ptr ss:[ebp-108],eax 
0068746F     .  898D 48FFFFFF    mov dword ptr ss:[ebp-B8],ecx 
00687475     .  52               push edx 
00687476     .  8D85 40FFFFFF    lea eax,dword ptr ss:[ebp-C0] 
0068747C     .  57               push edi 
0068747D     .  8D4D B0          lea ecx,dword ptr ss:[ebp-50] 
00687480     .  50               push eax 
00687481     .  51               push ecx 
00687482     .  C785 F0FEFFFF 08>mov dword ptr ss:[ebp-110],8 
0068748C     .  C745 C8 01000000 mov dword ptr ss:[ebp-38],1 
00687493     .  C745 C0 02000000 mov dword ptr ss:[ebp-40],2 
0068749A     .  C785 40FFFFFF 08>mov dword ptr ss:[ebp-C0],4008 
006874A4     .  FF15 AC104000    call dword ptr ds:[<&MSVBVM60.#632>]             ;  MSVBVM60.rtcMidCharVar 
006874AA     .  8D55 E4          lea edx,dword ptr ss:[ebp-1C] 
006874AD     .  8D45 A0          lea eax,dword ptr ss:[ebp-60] 
006874B0     .  8995 28FFFFFF    mov dword ptr ss:[ebp-D8],edx 
006874B6     .  50               push eax 
006874B7     .  8D8D 20FFFFFF    lea ecx,dword ptr ss:[ebp-E0] 
006874BD     .  57               push edi 
006874BE     .  8D55 90          lea edx,dword ptr ss:[ebp-70] 
006874C1     .  51               push ecx 
006874C2     .  52               push edx 
006874C3     .  C745 A8 01000000 mov dword ptr ss:[ebp-58],1 
006874CA     .  C745 A0 02000000 mov dword ptr ss:[ebp-60],2 
006874D1     .  C785 20FFFFFF 08>mov dword ptr ss:[ebp-E0],4008 
006874DB     .  FF15 AC104000    call dword ptr ds:[<&MSVBVM60.#632>]             ;  MSVBVM60.rtcMidCharVar 
006874E1     .  8B3D 30114000    mov edi,dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>>;  MSVBVM60.__vbaStrVarVal 
006874E7     .  8D45 90          lea eax,dword ptr ss:[ebp-70] 
006874EA     .  8D4D D4          lea ecx,dword ptr ss:[ebp-2C] 
006874ED     .  50               push eax 
006874EE     .  51               push ecx 
006874EF     .  FFD7             call edi                                         ;  逐位取前码的ASCII码值 
006874F1     .  50               push eax                                         ;   
006874F2     .  FFD3             call ebx 
006874F4     .  66:8BD0          mov dx,ax                                        ;   
006874F7     .  8D45 B0          lea eax,dword ptr ss:[ebp-50] 
006874FA     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
006874FD     .  50               push eax 
006874FE     .  51               push ecx 
006874FF     .  66:8995 CAFEFFFF mov word ptr ss:[ebp-136],dx                     ;   
00687506     .  FFD7             call edi                                         ;  <&MSVBVM60.__vbaStrVarVal> 
00687508     .  50               push eax                                         ;   
00687509     .  FFD3             call ebx 
0068750B     .  66:8B8D CAFEFFFF mov cx,word ptr ss:[ebp-136]                     ;   
00687512     .  C745 80 02000000 mov dword ptr ss:[ebp-80],2 
00687519     .  66:0FAFC8        imul cx,ax                                       ;  将取出的ASCII码值自乘 
0068751D     .  66:8BC6          mov ax,si                                        ;  计数值当前值 
00687520     .  0F80 EC010000    jo Super背?00687712 
00687526     .  66:6BC0 03       imul ax,ax,3                                     ;  当前值乘3送ax 
0068752A     .  0F80 E2010000    jo Super背?00687712 
00687530     .  66:99            cwd 
00687532     .  66:2BC2          sub ax,dx 
00687535     .  66:D1F8          sar ax,1                                         ;  ax除2得到商 
00687538     .  66:03C8          add cx,ax                                        ;  自乘值加商送cx 
0068753B     .  0F80 D1010000    jo Super背?00687712 
00687541     .  66:034D DC       add cx,word ptr ss:[ebp-24]                      ;  cx加上ss:[ebp-24]中的值 
00687545     .  0F80 C7010000    jo Super背?00687712 
0068754B     .  66:8BC1          mov ax,cx 
0068754E     .  66:B9 0A00       mov cx,0A 
00687552     .  66:99            cwd 
00687554     .  66:F7F9          idiv cx                                          ;  将每一位结果除A取余 
00687557     .  8D85 70FFFFFF    lea eax,dword ptr ss:[ebp-90] 
0068755D     .  66:8955 88       mov word ptr ss:[ebp-78],dx 
00687561     .  8D55 80          lea edx,dword ptr ss:[ebp-80] 
00687564     .  52               push edx 
00687565     .  50               push eax 
00687566     .  FF15 7C114000    call dword ptr ds:[<&MSVBVM60.#613>]             ;   
0068756C     .  8D8D 70FFFFFF    lea ecx,dword ptr ss:[ebp-90] 
00687572     .  8D95 60FFFFFF    lea edx,dword ptr ss:[ebp-A0] 
00687578     .  51               push ecx 
00687579     .  52               push edx 
0068757A     .  FF15 A4104000    call dword ptr ds:[<&MSVBVM60.#520>]             ;  MSVBVM60.rtcTrimVar 
00687580     .  8D85 F0FEFFFF    lea eax,dword ptr ss:[ebp-110] 
00687586     .  8D8D 60FFFFFF    lea ecx,dword ptr ss:[ebp-A0] 
0068758C     .  50               push eax 
0068758D     .  51               push ecx 
0068758E     .  8D95 50FFFFFF    lea edx,dword ptr ss:[ebp-B0] 
00687594     .  52               push edx 
00687595     .  FF15 34114000    call dword ptr ds:[<&MSVBVM60.__vbaVarCat>]      ;  MSVBVM60.__vbaVarCat 
0068759B     .  50               push eax                                         ;   
0068759C     .  FF15 20104000    call dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>]  ;  将余数连接起来就得到真正后码 
006875A2     .  8BD0             mov edx,eax                                      ;   
006875A4     .  8D4D E8          lea ecx,dword ptr ss:[ebp-18] 
006875A7     .  FF15 94114000    call dword ptr ds:[<&MSVBVM60.__vbaStrMove>]     ;  MSVBVM60.__vbaStrMove 
006875AD     .  8D45 D4          lea eax,dword ptr ss:[ebp-2C] 
006875B0     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
006875B3     .  50               push eax 
006875B4     .  51               push ecx 
006875B5     .  6A 02            push 2 
006875B7     .  FF15 58114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] ;   
006875BD     .  8D95 50FFFFFF    lea edx,dword ptr ss:[ebp-B0] 
006875C3     .  8D85 60FFFFFF    lea eax,dword ptr ss:[ebp-A0] 
006875C9     .  52               push edx 
006875CA     .  8D8D 70FFFFFF    lea ecx,dword ptr ss:[ebp-90] 
006875D0     .  50               push eax 
006875D1     .  8D55 80          lea edx,dword ptr ss:[ebp-80] 
006875D4     .  51               push ecx 
006875D5     .  8D45 90          lea eax,dword ptr ss:[ebp-70] 
006875D8     .  52               push edx 
006875D9     .  8D4D A0          lea ecx,dword ptr ss:[ebp-60] 
006875DC     .  50               push eax 
006875DD     .  8D55 B0          lea edx,dword ptr ss:[ebp-50] 
006875E0     .  51               push ecx 
006875E1     .  8D45 C0          lea eax,dword ptr ss:[ebp-40] 
006875E4     .  52               push edx 
006875E5     .  50               push eax 
006875E6     .  6A 08            push 8 
006875E8     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  获得注册码长度 
006875EE     .  B8 01000000      mov eax,1                                        ;  计数器赋值为1 
006875F3     .  83C4 30          add esp,30 
006875F6     .  66:03C6          add ax,si                                        ;  每循环一次计数值加1 
006875F9     .  0F80 13010000    jo Super背?00687712 
006875FF     .  8BF0             mov esi,eax                                      ;   
00687601     .^ E9 4AFEFFFF      jmp Super背?00687450                              ;   
00687606     >  A1 D0D06800      mov eax,dword ptr ds:[68D0D0] 
0068760B     .  85C0             test eax,eax 
0068760D     .  75 15            jnz short Super背?00687624 
0068760F     .  68 D0D06800      push Super背?0068D0D0 
00687614     .  68 60FF4200      push Super背?0042FF60 
00687619     .  FF15 48114000    call dword ptr ds:[<&MSVBVM60.__vbaNew2>]        ;  MSVBVM60.__vbaNew2 
0068761F     .  A1 D0D06800      mov eax,dword ptr ds:[68D0D0] 
00687624     >  8B08             mov ecx,dword ptr ds:[eax] 
00687626     .  50               push eax 
00687627     .  FF91 14030000    call dword ptr ds:[ecx+314] 
0068762D     .  8D55 D0          lea edx,dword ptr ss:[ebp-30] 
00687630     .  50               push eax 
00687631     .  52               push edx 
00687632     .  FF15 84104000    call dword ptr ds:[<&MSVBVM60.__vbaObjSet>]      ;  MSVBVM60.__vbaObjSet 
00687638     .  8BF0             mov esi,eax 
0068763A     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
0068763D     .  51               push ecx 
0068763E     .  56               push esi 
0068763F     .  8B06             mov eax,dword ptr ds:[esi] 
00687641     .  FF90 A0000000    call dword ptr ds:[eax+A0] 
00687647     .  85C0             test eax,eax 
00687649     .  DBE2             fclex 
0068764B     .  7D 12            jge short Super背?0068765F 
0068764D     .  68 A0000000      push 0A0 
00687652     .  68 543E4300      push Super背?00433E54 
00687657     .  56               push esi 
00687658     .  50               push eax 
00687659     .  FF15 5C104000    call dword ptr ds:[<&MSVBVM60.__vbaHresultCheckO>;  MSVBVM60.__vbaHresultCheckObj 
0068765F     >  8B55 D8          mov edx,dword ptr ss:[ebp-28]                    ;   12345678 
00687662     .  8B45 E8          mov eax,dword ptr ss:[ebp-18]                    ;   15527657 
00687665     .  52               push edx 
00687666     .  50               push eax 
00687667     .  FF15 C0104000    call dword ptr ds:[<&MSVBVM60.__vbaStrCmp>]      ;  注册码后码真假比较 
0068766D     .  8BF0             mov esi,eax                                      ;   不等eax=-1 
0068766F     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
00687672     .  F7DE             neg esi 
00687674     .  1BF6             sbb esi,esi 
00687676     .  F7DE             neg esi 
00687678     .  F7DE             neg esi 
0068767A     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
00687680     .  8D4D D0          lea ecx,dword ptr ss:[ebp-30] 
00687683     .  FF15 BC114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]     ;  MSVBVM60.__vbaFreeObj 
00687689     .  66:F7DE          neg si 
0068768C     .  1BF6             sbb esi,esi 
0068768E     .  68 FD766800      push Super背?006876FD 
00687693     .  F7DE             neg esi 
00687695     .  4E               dec esi 
00687696     .  8975 E0          mov dword ptr ss:[ebp-20],esi 
00687699     .  EB 51            jmp short Super背?006876EC 
0068769B     .  8D4D D4          lea ecx,dword ptr ss:[ebp-2C] 
0068769E     .  8D55 D8          lea edx,dword ptr ss:[ebp-28] 
006876A1     .  51               push ecx 
006876A2     .  52               push edx 
006876A3     .  6A 02            push 2 
006876A5     .  FF15 58114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] ;  MSVBVM60.__vbaFreeStrList 
006876AB     .  83C4 0C          add esp,0C 
006876AE     .  8D4D D0          lea ecx,dword ptr ss:[ebp-30] 
006876B1     .  FF15 BC114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeObj>]     ;  MSVBVM60.__vbaFreeObj 
006876B7     .  8D85 50FFFFFF    lea eax,dword ptr ss:[ebp-B0] 
006876BD     .  8D8D 60FFFFFF    lea ecx,dword ptr ss:[ebp-A0] 
006876C3     .  50               push eax 
006876C4     .  8D95 70FFFFFF    lea edx,dword ptr ss:[ebp-90] 
006876CA     .  51               push ecx 
006876CB     .  8D45 80          lea eax,dword ptr ss:[ebp-80] 
006876CE     .  52               push edx 
006876CF     .  8D4D 90          lea ecx,dword ptr ss:[ebp-70] 
006876D2     .  50               push eax 
006876D3     .  8D55 A0          lea edx,dword ptr ss:[ebp-60] 
006876D6     .  51               push ecx 
006876D7     .  8D45 B0          lea eax,dword ptr ss:[ebp-50] 
006876DA     .  52               push edx 
006876DB     .  8D4D C0          lea ecx,dword ptr ss:[ebp-40] 
006876DE     .  50               push eax 
006876DF     .  51               push ecx 
006876E0     .  6A 08            push 8 
006876E2     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
006876E8     .  83C4 24          add esp,24 
006876EB     .  C3               retn 
006876EC     >  8B35 B8114000    mov esi,dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]  ;  MSVBVM60.__vbaFreeStr 
006876F2     .  8D4D E8          lea ecx,dword ptr ss:[ebp-18] 
006876F5     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaFreeStr> 
006876F7     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
006876FA     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaFreeStr> 
006876FC     .  C3               retn 
006876FD   .  8B4D F0       mov     ecx, dword ptr [ebp-10] 
00687700   .  66:8B45 E0    mov     ax, word ptr [ebp-20] 
00687704   .  5F            pop     edi 
00687705   .  5E            pop     esi 
00687706   .  64:890D 00000>mov     dword ptr fs:[0], ecx 
0068770D   .  5B            pop     ebx 
0068770E   .  8BE5          mov     esp, ebp 
00687710   .  5D            pop     ebp 
00687711   .  C3            retn 
================================================== 
================================================== 
0067C716   .  68 96204000   push    <jmp.&MSVBVM60.__vbaExceptHandle>;  SE 处理程序安装 
0067C71B   .  64:A1 0000000>mov     eax, dword ptr fs:[0] 
0067C721   .  50            push    eax 
0067C722   .  64:8925 00000>mov     dword ptr fs:[0], esp 
0067C729   .  83EC 28       sub     esp, 28 
0067C72C   .  53            push    ebx 
0067C72D   .  56            push    esi 
0067C72E   .  57            push    edi 
0067C72F   .  8965 F4       mov     dword ptr [ebp-C], esp 
0067C732   .  C745 F8 30184>mov     dword ptr [ebp-8], 00401830 
0067C739   .  8B7D 08       mov     edi, dword ptr [ebp+8] 
0067C73C   .  8BC7          mov     eax, edi 
0067C73E   .  83E0 01       and     eax, 1 
0067C741   .  8945 FC       mov     dword ptr [ebp-4], eax 
0067C744   .  83E7 FE       and     edi, FFFFFFFE 
0067C747   .  57            push    edi 
0067C748   .  897D 08       mov     dword ptr [ebp+8], edi 
0067C74B   .  8B0F          mov     ecx, dword ptr [edi] 
0067C74D   .  FF51 04       call    dword ptr [ecx+4] 
0067C750   .  33DB          xor     ebx, ebx 
0067C752   .  895D E8       mov     dword ptr [ebp-18], ebx 
0067C755   .  895D E4       mov     dword ptr [ebp-1C], ebx 
0067C758   .  895D E0       mov     dword ptr [ebp-20], ebx 
0067C75B   .  895D DC       mov     dword ptr [ebp-24], ebx 
0067C75E   .  895D D8       mov     dword ptr [ebp-28], ebx 
0067C761   .  E8 3AAB0000   call    006872A0                         ;  这就是关键call 
0067C766   .  66:85C0       test    ax, ax                           ;  ax=0跳向失败 
0067C769   .  0F84 04010000 je      0067C873                         ;  关键跳转,不能跳 
0067C76F   .  8B35 54114000 mov     esi, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaStrCopy 
0067C775   .  BA 103E4300   mov     edx, 00433E10 
0067C77A   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C77D   .  FFD6          call    esi                              ;  <&MSVBVM60.__vbaStrCopy> 
0067C77F   .  8B17          mov     edx, dword ptr [edi] 
0067C781   .  8D45 E8       lea     eax, dword ptr [ebp-18] 
0067C784   .  50            push    eax 
0067C785   .  57            push    edi 
0067C786   .  FF92 40070000 call    dword ptr [edx+740] 
0067C78C   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C78F   .  FF15 B8114000 call    dword ptr [<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr 
0067C795   .  8B0F          mov     ecx, dword ptr [edi] 
0067C797   .  57            push    edi 
0067C798   .  FF91 14030000 call    dword ptr [ecx+314] 
0067C79E   .  8D55 D8       lea     edx, dword ptr [ebp-28] 
0067C7A1   .  50            push    eax 
0067C7A2   .  52            push    edx 
0067C7A3   .  FF15 84104000 call    dword ptr [<&MSVBVM60.__vbaObjSe>;  MSVBVM60.__vbaObjSet 
0067C7A9   .  8BF8          mov     edi, eax 
0067C7AB   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C7AE   .  51            push    ecx 
0067C7AF   .  57            push    edi 
0067C7B0   .  8B07          mov     eax, dword ptr [edi] 
0067C7B2   .  FF90 A0000000 call    dword ptr [eax+A0] 
0067C7B8   .  3BC3          cmp     eax, ebx 
0067C7BA   .  DBE2          fclex 
0067C7BC   .  7D 12         jge     short 0067C7D0 
0067C7BE   .  68 A0000000   push    0A0 
0067C7C3   .  68 543E4300   push    00433E54 
0067C7C8   .  57            push    edi 
0067C7C9   .  50            push    eax 
0067C7CA   .  FF15 5C104000 call    dword ptr [<&MSVBVM60.__vbaHresu>;  MSVBVM60.__vbaHresultCheckObj 
0067C7D0   >  8B55 E8       mov     edx, dword ptr [ebp-18] 
0067C7D3   .  8D4D DC       lea     ecx, dword ptr [ebp-24] 
0067C7D6   .  895D E8       mov     dword ptr [ebp-18], ebx 
0067C7D9   .  FF15 94114000 call    dword ptr [<&MSVBVM60.__vbaStrMo>;  MSVBVM60.__vbaStrMove 
0067C7DF   .  BA 483E4300   mov     edx, 00433E48                    ;  UNICODE "value" 
0067C7E4   .  8D4D E0       lea     ecx, dword ptr [ebp-20] 
0067C7E7   .  FFD6          call    esi 
0067C7E9   .  BA 303E4300   mov     edx, 00433E30                    ;  UNICODE "register" 
0067C7EE   .  8D4D E4       lea     ecx, dword ptr [ebp-1C] 
0067C7F1   .  FFD6          call    esi 
0067C7F3   .  8D55 DC       lea     edx, dword ptr [ebp-24] 
0067C7F6   .  8D45 E0       lea     eax, dword ptr [ebp-20] 
0067C7F9   .  52            push    edx 
0067C7FA   .  8D4D E4       lea     ecx, dword ptr [ebp-1C] 
0067C7FD   .  50            push    eax 
0067C7FE   .  51            push    ecx 
0067C7FF   .  E8 FCA40000   call    00686D00 
0067C804   .  8B3D 58114000 mov     edi, dword ptr [<&MSVBVM60.__vba>;  MSVBVM60.__vbaFreeStrList 
0067C80A   .  8D55 DC       lea     edx, dword ptr [ebp-24] 
0067C80D   .  8D45 E0       lea     eax, dword ptr [ebp-20] 
0067C810   .  52            push    edx 
0067C811   .  8D4D E4       lea     ecx, dword ptr [ebp-1C] 
0067C814   .  50            push    eax 
0067C815   .  51            push    ecx 
0067C816   .  6A 03         push    3 
0067C818   .  FFD7          call    edi                              ;  <&MSVBVM60.__vbaFreeStrList> 
0067C81A   .  83C4 10       add     esp, 10 
0067C81D   .  8D4D D8       lea     ecx, dword ptr [ebp-28] 
0067C820   .  FF15 BC114000 call    dword ptr [<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj 
0067C826   .  BA 14384300   mov     edx, 00433814 
0067C82B   .  8D4D E0       lea     ecx, dword ptr [ebp-20] 
0067C82E   .  FFD6          call    esi 
0067C830   .  BA 683E4300   mov     edx, 00433E68                    ;  UNICODE "rflag" 
0067C835   .  8D4D E4       lea     ecx, dword ptr [ebp-1C] 
0067C838   .  FFD6          call    esi 
0067C83A   .  BA 58394300   mov     edx, 00433958                    ;  UNICODE "Security" 
0067C83F   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C842   .  FFD6          call    esi 
0067C844   .  8D55 E0       lea     edx, dword ptr [ebp-20] 
0067C847   .  8D45 E4       lea     eax, dword ptr [ebp-1C] 
0067C84A   .  52            push    edx 
0067C84B   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C84E   .  50            push    eax 
0067C84F   .  51            push    ecx 
0067C850   .  E8 ABA40000   call    00686D00 
0067C855   .  8D55 E0       lea     edx, dword ptr [ebp-20] 
0067C858   .  8D45 E4       lea     eax, dword ptr [ebp-1C] 
0067C85B   .  52            push    edx 
0067C85C   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C85F   .  50            push    eax 
0067C860   .  51            push    ecx 
0067C861   .  6A 03         push    3 
0067C863   .  FFD7          call    edi 
0067C865   .  83C4 10       add     esp, 10 
0067C868   .  66:C705 50D06>mov     word ptr [68D050], 0FFFF 
0067C871   .  EB 24         jmp     short 0067C897 
0067C873   >  BA 783E4300   mov     edx, 00433E78 
0067C878   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C87B   .  FF15 54114000 call    dword ptr [<&MSVBVM60.__vbaStrCo>;  MSVBVM60.__vbaStrCopy 
0067C881   .  8B17          mov     edx, dword ptr [edi] 
0067C883   .  8D45 E8       lea     eax, dword ptr [ebp-18] 
0067C886   .  50            push    eax 
0067C887   .  57            push    edi 
0067C888   .  FF92 40070000 call    dword ptr [edx+740] 
0067C88E   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C891   .  FF15 B8114000 call    dword ptr [<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStr 
0067C897   >  895D FC       mov     dword ptr [ebp-4], ebx 
0067C89A   .  68 C7C86700   push    0067C8C7 
0067C89F   .  EB 25         jmp     short 0067C8C6 
0067C8A1   .  8D4D DC       lea     ecx, dword ptr [ebp-24] 
0067C8A4   .  8D55 E0       lea     edx, dword ptr [ebp-20] 
0067C8A7   .  51            push    ecx 
0067C8A8   .  8D45 E4       lea     eax, dword ptr [ebp-1C] 
0067C8AB   .  52            push    edx 
0067C8AC   .  8D4D E8       lea     ecx, dword ptr [ebp-18] 
0067C8AF   .  50            push    eax 
0067C8B0   .  51            push    ecx 
0067C8B1   .  6A 04         push    4 
0067C8B3   .  FF15 58114000 call    dword ptr [<&MSVBVM60.__vbaFreeS>;  MSVBVM60.__vbaFreeStrList 
0067C8B9   .  83C4 14       add     esp, 14 
0067C8BC   .  8D4D D8       lea     ecx, dword ptr [ebp-28] 
0067C8BF   .  FF15 BC114000 call    dword ptr [<&MSVBVM60.__vbaFreeO>;  MSVBVM60.__vbaFreeObj 
0067C8C5   .  C3            retn 
0067C8C6   >  C3            retn                                     ;  RET 用作跳转到 0067C8C7 
0067C8C7   >  8B45 08       mov     eax, dword ptr [ebp+8] 
0067C8CA   .  50            push    eax 
0067C8CB   .  8B10          mov     edx, dword ptr [eax] 
0067C8CD   .  FF52 08       call    dword ptr [edx+8] 
0067C8D0   .  8B45 FC       mov     eax, dword ptr [ebp-4] 
0067C8D3   .  8B4D EC       mov     ecx, dword ptr [ebp-14] 
0067C8D6   .  5F            pop     edi 
0067C8D7   .  5E            pop     esi 
0067C8D8   .  64:890D 00000>mov     dword ptr fs:[0], ecx 
0067C8DF   .  5B            pop     ebx 
0067C8E0   .  8BE5          mov     esp, ebp 
0067C8E2   .  5D            pop     ebp 
0067C8E3   .  C2 0400       retn    4 
================================================== 
================================================== 
00687336     .  FF90 F8060000    call dword ptr ds:[eax+6F8]      将硬盘序列号转换为91275844 
.................................................................................................... 
00431986     . /E9 05172500      jmp Super背?00683090 
0043198B       |00               db 00 
0043198C       |00               db 00 
0043198D       |00               db 00 
0043198E       |00               db 00 
0043198F       |00               db 00 
00431990       |54D16800         dd Super背?0068D154 
省略代码 
.............................................................. 
.............................................................. 
00683090     > \55               push ebp 
00683091     .  8BEC             mov ebp,esp 
00683093     .  83EC 0C          sub esp,0C 
00683096     .  68 96204000      push <jmp.&MSVBVM60.__vbaExceptHandler>          ;  SE 句柄安装 
0068309B     .  64:A1 00000000   mov eax,dword ptr fs:[0] 
006830A1     .  50               push eax 
006830A2     .  64:8925 00000000 mov dword ptr fs:[0],esp 
006830A9     .  81EC A8000000    sub esp,0A8 
006830AF     .  53               push ebx 
006830B0     .  56               push esi 
006830B1     .  57               push edi 
006830B2     .  8965 F4          mov dword ptr ss:[ebp-C],esp 
006830B5     .  C745 F8 701B4000 mov dword ptr ss:[ebp-8],Super背?00401B70 
006830BC     .  33DB             xor ebx,ebx 
006830BE     .  895D FC          mov dword ptr ss:[ebp-4],ebx 
006830C1     .  8B45 08          mov eax,dword ptr ss:[ebp+8] 
006830C4     .  50               push eax 
006830C5     .  8B08             mov ecx,dword ptr ds:[eax] 
006830C7     .  FF51 04          call dword ptr ds:[ecx+4] 
006830CA     .  8B55 0C          mov edx,dword ptr ss:[ebp+C] 
006830CD     .  8D45 C4          lea eax,dword ptr ss:[ebp-3C] 
006830D0     .  53               push ebx 
006830D1     .  50               push eax 
006830D2     .  895D E8          mov dword ptr ss:[ebp-18],ebx 
006830D5     .  895D E4          mov dword ptr ss:[ebp-1C],ebx 
006830D8     .  895D E0          mov dword ptr ss:[ebp-20],ebx 
006830DB     .  895D DC          mov dword ptr ss:[ebp-24],ebx 
006830DE     .  895D D8          mov dword ptr ss:[ebp-28],ebx 
006830E1     .  895D D4          mov dword ptr ss:[ebp-2C],ebx 
006830E4     .  895D C4          mov dword ptr ss:[ebp-3C],ebx 
006830E7     .  895D B4          mov dword ptr ss:[ebp-4C],ebx 
006830EA     .  895D A4          mov dword ptr ss:[ebp-5C],ebx 
006830ED     .  895D 94          mov dword ptr ss:[ebp-6C],ebx 
006830F0     .  895D 84          mov dword ptr ss:[ebp-7C],ebx 
006830F3     .  899D 74FFFFFF    mov dword ptr ss:[ebp-8C],ebx 
006830F9     .  899D 54FFFFFF    mov dword ptr ss:[ebp-AC],ebx 
006830FF     .  891A             mov dword ptr ds:[edx],ebx 
00683101     .  FF15 24114000    call dword ptr ds:[<&MSVBVM60.#608>]             ;  MSVBVM60.rtcVarBstrFromAnsi 
00683107     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C]                        
0068310A     .  8D55 B4          lea edx,dword ptr ss:[ebp-4C] 
0068310D     .  51               push ecx 
0068310E     .  68 00040000      push 400 
00683113     .  52               push edx 
00683114     .  FF15 1C114000    call dword ptr ds:[<&MSVBVM60.#607>]             ;  MSVBVM60.rtcStringVar 
0068311A     .  8B3D 20104000    mov edi,dword ptr ds:[<&MSVBVM60.__vbaStrVarMove>;  MSVBVM60.__vbaStrVarMove 
00683120     .  8D45 B4          lea eax,dword ptr ss:[ebp-4C] 
00683123     .  50               push eax 
00683124     .  FFD7             call edi                                         ;  <&MSVBVM60.__vbaStrVarMove> 
00683126     .  8B35 94114000    mov esi,dword ptr ds:[<&MSVBVM60.__vbaStrMove>]  ;  MSVBVM60.__vbaStrMove 
0068312C     .  8BD0             mov edx,eax 
0068312E     .  8D4D E0          lea ecx,dword ptr ss:[ebp-20] 
00683131     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaStrMove> 
00683133     .  8D4D B4          lea ecx,dword ptr ss:[ebp-4C] 
00683136     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
00683139     .  51               push ecx 
0068313A     .  52               push edx 
0068313B     .  6A 02            push 2 
0068313D     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
00683143     .  8B45 E0          mov eax,dword ptr ss:[ebp-20] 
00683146     .  83C4 0C          add esp,0C 
00683149     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
0068314C     .  50               push eax 
0068314D     .  51               push ecx 
0068314E     .  FF15 74114000    call dword ptr ds:[<&MSVBVM60.__vbaStrToAnsi>]   ;  MSVBVM60.__vbaStrToAnsi 
00683154     .  50               push eax 
00683155     .  E8 6606DBFF      call Super背?004337C0 
0068315A     .  DDD8             fstp st 
0068315C     .  FF15 58104000    call dword ptr ds:[<&MSVBVM60.__vbaSetSystemErro>;  MSVBVM60.__vbaSetSystemError 
00683162     .  8B55 D8          mov edx,dword ptr ss:[ebp-28]                    ;  获得硬盘序列号(ASCII "            5MT1A8DX") 
00683165     .  8D45 E0          lea eax,dword ptr ss:[ebp-20] 
00683168     .  52               push edx 
00683169     .  50               push eax 
0068316A     .  FF15 0C114000    call dword ptr ds:[<&MSVBVM60.__vbaStrToUnicode>>;  eax= (ASCII "            5MT1A8DX") 
00683170     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
00683173     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
00683179     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
0068317C     .  53               push ebx 
0068317D     .  51               push ecx 
0068317E     .  FF15 24114000    call dword ptr ds:[<&MSVBVM60.#608>]             ;  MSVBVM60.rtcVarBstrFromAnsi 
00683184     .  53               push ebx 
00683185     .  6A FF            push -1 
00683187     .  6A 01            push 1 
00683189     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
0068318C     .  68 881E4300      push Super背?00431E88 
00683191     .  8D45 D8          lea eax,dword ptr ss:[ebp-28] 
00683194     .  52               push edx 
00683195     .  50               push eax 
00683196     .  FF15 30114000    call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ;  MSVBVM60.__vbaStrVarVal 
0068319C     .  50               push eax 
0068319D     .  8B4D E0          mov ecx,dword ptr ss:[ebp-20]                    ;  ecx= (UNICODE "            5MT1A8DX") 
006831A0     .  51               push ecx 
006831A1     .  FF15 10114000    call dword ptr ds:[<&MSVBVM60.#712>]             ;  MSVBVM60.rtcReplace 
006831A7     .  8945 BC          mov dword ptr ss:[ebp-44],eax                    ;  eax= (UNICODE "            5MT1A8DX") 
006831AA     .  8D55 B4          lea edx,dword ptr ss:[ebp-4C] 
006831AD     .  8D45 A4          lea eax,dword ptr ss:[ebp-5C] 
006831B0     .  52               push edx 
006831B1     .  50               push eax 
006831B2     .  C745 B4 08000000 mov dword ptr ss:[ebp-4C],8 
006831B9     .  FF15 A4104000    call dword ptr ds:[<&MSVBVM60.#520>]             ;  MSVBVM60.rtcTrimVar 
006831BF     .  8D4D A4          lea ecx,dword ptr ss:[ebp-5C] 
006831C2     .  51               push ecx 
006831C3     .  FFD7             call edi                                         ;  <&MSVBVM60.__vbaStrVarMove> 
006831C5     .  8BD0             mov edx,eax                                      ;  eax=(UNICODE "5MT1A8DX") 
006831C7     .  8D4D E0          lea ecx,dword ptr ss:[ebp-20] 
006831CA     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaStrMove> 
006831CC     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
006831CF     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
006831D5     .  8D55 A4          lea edx,dword ptr ss:[ebp-5C] 
006831D8     .  8D45 B4          lea eax,dword ptr ss:[ebp-4C] 
006831DB     .  52               push edx 
006831DC     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
006831DF     .  50               push eax 
006831E0     .  51               push ecx 
006831E1     .  6A 03            push 3 
006831E3     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
006831E9     .  8B1D 1C104000    mov ebx,dword ptr ds:[<&MSVBVM60.__vbaFreeVar>]  ;  MSVBVM60.__vbaFreeVar 
006831EF     .  83C4 10          add esp,10 
006831F2     >  8B55 E0          mov edx,dword ptr ss:[ebp-20]                    ;   保存当前硬盘序列号 
006831F5     .  52               push edx                                         ;   
006831F6     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  当前硬盘序列号长度 
006831FC     .  85C0             test eax,eax                                     ;  检查长度是否为0为0跳出循环 
006831FE     .  0F8E CB000000    jle Super背?006832CF 
00683204     .  8D8D 74FFFFFF    lea ecx,dword ptr ss:[ebp-8C] 
0068320A     .  6A 01            push 1 
0068320C     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
0068320F     .  8D45 E0          lea eax,dword ptr ss:[ebp-20] 
00683212     .  51               push ecx 
00683213     .  52               push edx 
00683214     .  8985 7CFFFFFF    mov dword ptr ss:[ebp-84],eax 
0068321A     .  C785 74FFFFFF 08>mov dword ptr ss:[ebp-8C],4008 
00683224     .  FF15 88114000    call dword ptr ds:[<&MSVBVM60.#617>]             ;  MSVBVM60.rtcLeftCharVar 
0068322A     .  8B45 E4          mov eax,dword ptr ss:[ebp-1C]                        
0068322D     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
00683230     .  50               push eax 
00683231     .  8D55 D8          lea edx,dword ptr ss:[ebp-28] 
00683234     .  51               push ecx 
00683235     .  52               push edx 
00683236     .  FF15 30114000    call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ;  逐位取硬盘序列号的ASCII码值存入eax 
0068323C     .  50               push eax                                         ;   
0068323D     .  FF15 3C104000    call dword ptr ds:[<&MSVBVM60.#516>]             ;  MSVBVM60.rtcAnsiValueBstr 
00683243     .  66:99            cwd 
00683245     .  66:B9 0A00       mov cx,0A 
00683249     .  66:F7F9          idiv cx                                          ;  将取得值除A取余 
0068324C     .  52               push edx 
0068324D     .  FF15 04104000    call dword ptr ds:[<&MSVBVM60.__vbaStrI2>]       ;  将余数转换成它的ASCII码值 
00683253     .  8BD0             mov edx,eax                                      ;   
00683255     .  8D4D D4          lea ecx,dword ptr ss:[ebp-2C] 
00683258     .  FFD6             call esi 
0068325A     .  50               push eax 
0068325B     .  FF15 50104000    call dword ptr ds:[<&MSVBVM60.__vbaStrCat>]      ;  将余数连接起来得到新的数值串 
00683261     .  8BD0             mov edx,eax                                      ;   
00683263     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
00683266     .  FFD6             call esi 
00683268     .  8D55 D4          lea edx,dword ptr ss:[ebp-2C] 
0068326B     .  8D45 D8          lea eax,dword ptr ss:[ebp-28] 
0068326E     .  52               push edx 
0068326F     .  50               push eax 
00683270     .  6A 02            push 2 
00683272     .  FF15 58114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] ;  MSVBVM60.__vbaFreeStrList 
00683278     .  83C4 0C          add esp,0C 
0068327B     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
0068327E     .  FFD3             call ebx 
00683280     .  8B55 E0          mov edx,dword ptr ss:[ebp-20]                    ;  保存当前的硬盘序列号 
00683283     .  8D4D E0          lea ecx,dword ptr ss:[ebp-20] 
00683286     .  52               push edx 
00683287     .  898D 7CFFFFFF    mov dword ptr ss:[ebp-84],ecx 
0068328D     .  C785 74FFFFFF 08>mov dword ptr ss:[ebp-8C],4008 
00683297     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  当前硬盘序列号长度 
0068329D     .  83E8 01          sub eax,1                                        ;  当前长度减1 
006832A0     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
006832A3     .  0F80 F5010000    jo Super背?0068349E 
006832A9     .  50               push eax 
006832AA     .  8D85 74FFFFFF    lea eax,dword ptr ss:[ebp-8C] 
006832B0     .  50               push eax 
006832B1     .  51               push ecx 
006832B2     .  FF15 98114000    call dword ptr ds:[<&MSVBVM60.#619>]             ;  MSVBVM60.rtcRightCharVar 
006832B8     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
006832BB     .  52               push edx 
006832BC     .  FFD7             call edi                                         ;  保存当前硬盘序列号 
006832BE     .  8BD0             mov edx,eax                                      ;   
006832C0     .  8D4D E0          lea ecx,dword ptr ss:[ebp-20]                    ;   
006832C3     .  FFD6             call esi 
006832C5     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
006832C8     .  FFD3             call ebx 
006832CA     .^ E9 23FFFFFF      jmp Super背?006831F2 
006832CF     >  8B45 E4          mov eax,dword ptr ss:[ebp-1C]                    ;  保存当前的新数值串 
006832D2     .  50               push eax 
006832D3     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  当前新数值串的长度 
006832D9     .  85C0             test eax,eax                                     ;   检查长度是否为0为0跳出循环 
006832DB     .  0F8E 28010000    jle Super背?00683409 
006832E1     .  8B4D E8          mov ecx,dword ptr ss:[ebp-18] 
006832E4     .  8D85 74FFFFFF    lea eax,dword ptr ss:[ebp-8C] 
006832EA     .  898D 5CFFFFFF    mov dword ptr ss:[ebp-A4],ecx 
006832F0     .  6A 01            push 1 
006832F2     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
006832F5     .  8D55 E4          lea edx,dword ptr ss:[ebp-1C] 
006832F8     .  50               push eax 
006832F9     .  51               push ecx 
006832FA     .  C785 54FFFFFF 08>mov dword ptr ss:[ebp-AC],8 
00683304     .  8995 7CFFFFFF    mov dword ptr ss:[ebp-84],edx 
0068330A     .  C785 74FFFFFF 08>mov dword ptr ss:[ebp-8C],4008 
00683314     .  FF15 88114000    call dword ptr ds:[<&MSVBVM60.#617>]             ;  MSVBVM60.rtcLeftCharVar 
0068331A     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
0068331D     .  8D45 D8          lea eax,dword ptr ss:[ebp-28] 
00683320     .  52               push edx 
00683321     .  50               push eax 
00683322     .  FF15 30114000    call dword ptr ds:[<&MSVBVM60.__vbaStrVarVal>]   ;  MSVBVM60.__vbaStrVarVal 
00683328     .  50               push eax                                         ;   
00683329     .  FF15 C0114000    call dword ptr ds:[<&MSVBVM60.#581>]             ;  逐位取新数值的实数到(ST0) 
0068332F     .  DC0D 681B4000    fmul qword ptr ds:[401B68]                          (ST0)乘以ds:[401B68]的值将结果送(ST0) 
00683335     .  DFE0             fstsw ax                                         ;   
00683337     .  A8 0D            test al,0D 
00683339     .  0F85 5A010000    jnz Super背?00683499 
0068333F     .  FF15 84114000    call dword ptr ds:[<&MSVBVM60.__vbaFpI4>]        ;  将(ST0)十进制值转换为它的十六进制值 
00683345     .  99               cdq                                              ;   
00683346     .  B9 0A000000      mov ecx,0A 
0068334B     .  C745 B4 03000000 mov dword ptr ss:[ebp-4C],3 
00683352     .  F7F9             idiv ecx                                         ;  将十六进制值除A取余 
00683354     .  8D45 A4          lea eax,dword ptr ss:[ebp-5C] 
00683357     .  8955 BC          mov dword ptr ss:[ebp-44],edx 
0068335A     .  8D55 B4          lea edx,dword ptr ss:[ebp-4C] 
0068335D     .  52               push edx 
0068335E     .  50               push eax 
0068335F     .  FF15 7C114000    call dword ptr ds:[<&MSVBVM60.#613>]             ;  MSVBVM60.rtcVarStrFromVar 
00683365     .  8D4D A4          lea ecx,dword ptr ss:[ebp-5C] 
00683368     .  8D55 94          lea edx,dword ptr ss:[ebp-6C] 
0068336B     .  51               push ecx 
0068336C     .  52               push edx 
0068336D     .  FF15 A4104000    call dword ptr ds:[<&MSVBVM60.#520>]             ;  MSVBVM60.rtcTrimVar 
00683373     .  8D85 54FFFFFF    lea eax,dword ptr ss:[ebp-AC] 
00683379     .  8D4D 94          lea ecx,dword ptr ss:[ebp-6C] 
0068337C     .  50               push eax 
0068337D     .  8D55 84          lea edx,dword ptr ss:[ebp-7C] 
00683380     .  51               push ecx 
00683381     .  52               push edx 
00683382     .  FF15 34114000    call dword ptr ds:[<&MSVBVM60.__vbaVarCat>]      ;  MSVBVM60.__vbaVarCat 
00683388     .  50               push eax 
00683389     .  FFD7             call edi                                            将余数连接起来得到前码 
0068338B     .  8BD0             mov edx,eax 
0068338D     .  8D4D E8          lea ecx,dword ptr ss:[ebp-18] 
00683390     .  FFD6             call esi 
00683392     .  8D4D D8          lea ecx,dword ptr ss:[ebp-28] 
00683395     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
0068339B     .  8D45 84          lea eax,dword ptr ss:[ebp-7C] 
0068339E     .  8D4D 94          lea ecx,dword ptr ss:[ebp-6C] 
006833A1     .  50               push eax 
006833A2     .  8D55 A4          lea edx,dword ptr ss:[ebp-5C] 
006833A5     .  51               push ecx 
006833A6     .  8D45 B4          lea eax,dword ptr ss:[ebp-4C] 
006833A9     .  52               push edx 
006833AA     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
006833AD     .  50               push eax 
006833AE     .  51               push ecx 
006833AF     .  6A 05            push 5 
006833B1     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
006833B7     .  8B45 E4          mov eax,dword ptr ss:[ebp-1C]                    ;  获得当前的新数值串 
006833BA     .  83C4 18          add esp,18 
006833BD     .  8D55 E4          lea edx,dword ptr ss:[ebp-1C] 
006833C0     .  C785 74FFFFFF 08>mov dword ptr ss:[ebp-8C],4008 
006833CA     .  50               push eax 
006833CB     .  8995 7CFFFFFF    mov dword ptr ss:[ebp-84],edx 
006833D1     .  FF15 28104000    call dword ptr ds:[<&MSVBVM60.__vbaLenBstr>]     ;  获得当前的新数值串长度 
006833D7     .  83E8 01          sub eax,1                                           当前长度减1 
006833DA     .  8D8D 74FFFFFF    lea ecx,dword ptr ss:[ebp-8C] 
006833E0     .  0F80 B8000000    jo Super背?0068349E 
006833E6     .  50               push eax 
006833E7     .  8D55 C4          lea edx,dword ptr ss:[ebp-3C] 
006833EA     .  51               push ecx 
006833EB     .  52               push edx 
006833EC     .  FF15 98114000    call dword ptr ds:[<&MSVBVM60.#619>]             ;  MSVBVM60.rtcRightCharVar 
006833F2     .  8D45 C4          lea eax,dword ptr ss:[ebp-3C] 
006833F5     .  50               push eax 
006833F6     .  FFD7             call edi                                         ;  获得当前的新数值串 
006833F8     .  8BD0             mov edx,eax 
006833FA     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
006833FD     .  FFD6             call esi 
006833FF     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
00683402     .  FFD3             call ebx 
00683404     .^ E9 C6FEFFFF      jmp Super背?006832CF                              ;   
00683409     >  8B55 E8          mov edx,dword ptr ss:[ebp-18]                     ;  显示前码 
0068340C     .  8D4D DC          lea ecx,dword ptr ss:[ebp-24] 
0068340F     .  FF15 54114000    call dword ptr ds:[<&MSVBVM60.__vbaStrCopy>]     ;  MSVBVM60.__vbaStrCopy 
00683415     .  9B               wait 
00683416     .  68 72346800      push Super背?00683472 
0068341B     .  EB 3F            jmp short Super背?0068345C 
0068341D     .  F645 FC 04       test byte ptr ss:[ebp-4],4 
00683421     .  74 09            je short Super背?0068342C 
00683423     .  8D4D DC          lea ecx,dword ptr ss:[ebp-24] 
00683426     .  FF15 B8114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]     ;  MSVBVM60.__vbaFreeStr 
0068342C     >  8D4D D4          lea ecx,dword ptr ss:[ebp-2C] 
0068342F     .  8D55 D8          lea edx,dword ptr ss:[ebp-28] 
00683432     .  51               push ecx 
00683433     .  52               push edx 
00683434     .  6A 02            push 2 
00683436     .  FF15 58114000    call dword ptr ds:[<&MSVBVM60.__vbaFreeStrList>] ;  MSVBVM60.__vbaFreeStrList 
0068343C     .  8D45 84          lea eax,dword ptr ss:[ebp-7C] 
0068343F     .  8D4D 94          lea ecx,dword ptr ss:[ebp-6C] 
00683442     .  50               push eax 
00683443     .  8D55 A4          lea edx,dword ptr ss:[ebp-5C] 
00683446     .  51               push ecx 
00683447     .  8D45 B4          lea eax,dword ptr ss:[ebp-4C] 
0068344A     .  52               push edx 
0068344B     .  8D4D C4          lea ecx,dword ptr ss:[ebp-3C] 
0068344E     .  50               push eax 
0068344F     .  51               push ecx 
00683450     .  6A 05            push 5 
00683452     .  FF15 30104000    call dword ptr ds:[<&MSVBVM60.__vbaFreeVarList>] ;  MSVBVM60.__vbaFreeVarList 
00683458     .  83C4 24          add esp,24 
0068345B     .  C3               retn 
0068345C     >  8B35 B8114000    mov esi,dword ptr ds:[<&MSVBVM60.__vbaFreeStr>]  ;  MSVBVM60.__vbaFreeStr 
00683462     .  8D4D E8          lea ecx,dword ptr ss:[ebp-18] 
00683465     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaFreeStr> 
00683467     .  8D4D E4          lea ecx,dword ptr ss:[ebp-1C] 
0068346A     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaFreeStr> 
0068346C     .  8D4D E0          lea ecx,dword ptr ss:[ebp-20] 
0068346F     .  FFD6             call esi                                         ;  <&MSVBVM60.__vbaFreeStr> 
00683471     .  C3               retn 
00683472     .  8B45 08          mov eax,dword ptr ss:[ebp+8] 
00683475     .  50               push eax 
00683476     .  8B10             mov edx,dword ptr ds:[eax] 
00683478     .  FF52 08          call dword ptr ds:[edx+8] 
0068347B     .  8B45 0C          mov eax,dword ptr ss:[ebp+C] 
0068347E     .  8B4D DC          mov ecx,dword ptr ss:[ebp-24] 
00683481     .  8908             mov dword ptr ds:[eax],ecx 
00683483     .  8B45 FC          mov eax,dword ptr ss:[ebp-4] 
00683486     .  8B4D EC          mov ecx,dword ptr ss:[ebp-14] 
00683489     .  5F               pop edi 
0068348A     .  5E               pop esi 
0068348B     .  64:890D 00000000 mov dword ptr fs:[0],ecx 
00683492     .  5B               pop ebx 
00683493     .  8BE5             mov esp,ebp 
00683495     .  5D               pop ebp 
00683496     .  C2 0800          retn 8 
00683499     >^ E9 FEEBD7FF      jmp <jmp.&MSVBVM60.__vbaFPException> 
 
算法总结: 
计算前码:  首先获得硬盘序列号5MT1A8DX,循环逐位取序列号的ASCII码值除A取余,最后将余数连接起来得到37495688. 
           循环逐位取37495688的值送入(st0)并乘以ds:[401B68]的值(我这里是3),得到十进制值,将(ST0)十进制值 
            转换为它的十六进制值除A取余,最后将余数连接起来得到91275844,这就是前码. 
   
计算后码:1.循环逐位取91275844的值,转换为它的ASCII码值,然后累加得到1A8在乘以13得到1F78除9取余存入ss:[ebp-24]中. 
         2.循环逐位取91275844的ASCII码值,自乘,同时计数,将它取第一位数,计数为1,每循环一次计数值加1,将当前计 
           数值乘3除2得到商加上自乘值和ss:[ebp-24]中的值,除A取余,最后将余数连接起来就得到15527657,这就是后码. 
 
[ 本帖最后由 交响诗篇 于 2008-8-7 10:42 编辑 ] |   
 
 
 
 |