• 标 题:浅谈用Ollydbg跟踪vb程序---soli 兄弟的问题
  • 作 者:fxyang
  • 时 间:2003/04/14 09:57pm
  • 链 接:http://bbs.pediy.com

浅谈用Ollydbg跟踪vb程序---soli 兄弟的问题


软件名称: OfficeCenter-register
编程语言: vb5.0
跟踪目的: 演示用Ollydbg跟踪vb程序;用内存断点跟踪注册码计算流程
        对于本软件的注册算法只大概分析,不做具体分析了
跟踪工具: Ollydbg_cn v1.09  SmartCheck  fileinfo v2.5  
本人声明: 我也是个初学者,只是对破解感兴趣,没有别的目的.如果我的表达有错误,请大
         家指正.
跟踪过程:
  首先当然是用fi检查,显示vb5.0 无壳.因此先用SmartCheck试试,加载后运行填试验码注册,在记录的事件中还容易得到注册码.为了跟踪注册算法,现在开始用Ollydbg跟踪.
  由于vb程序一般是在MSVBVM*.DLL中运行,所以一般的vb程序都有一个特点,它的入口应该是这样的:
    68 8C1B4000   PUSH    Register.00401B8C     <---保存环境
    E8 EEFFFFFF   CALL    <JMP.&MSVBVM60.#100>  <---转移到MSVBVM60.DLL
(一些经过加壳的vb程序,壳释放完后来到入口点也是这样的)
   这样,为了下vb 断点.在此提供二种办法:
   1.) 炎之川兄的办法
    在 Ollydbg 下载入后,alt+e,选择 msvbvm60.dll,查看名称,在 _vbastrcomp 下断,即可拦下:)    
   2.) 我的办法
    在 Ollydbg 下载入后,直接用F8一下,到下面的CXLL语句后,用F7运行就能到达MSVBVM60.DLL中.查看名称,在 _vbastrcomp 下断,即可拦下^_^  (加壳的程序只要到了入口点也可以这样)

  在本例中我用了MSVBVM60.__vbaStrCmp  中断,填好注册信息--试验码:"78945-61230-01234-56789-14725" 按注册键,被Ollydbg中断:


0040546C   .  68 442F4000   PUSH    Register.00402F44
00405471   .  FF15 70104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaStrCmp>

;  MSVBVM60.__vbaStrCmp  <--中断
// 上面的函数处理试验码

00405477   .  8BF8          MOV     EDI, EAX                            
00405479   .  8D4D E4       LEA     ECX, DWORD PTR SS:[EBP-1C]
0040547C   .  F7DF          NEG     EDI
0040547E   .  1BFF          SBB     EDI, EDI
00405480   .  47            INC     EDI
00405481   .  F7DF          NEG     EDI
00405483   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeSt>
00405489   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
0040548C   .  FF15 28114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeOb>
00405492   .  66:85FF       TEST    DI, DI
00405495   .  74 78         JE      SHORT Register.0040550F
00405497   .  8B35 F4104000 MOV     ESI, DWORD PTR DS:[<&MSVBVM60.__vbaV>
0040549D   .  B9 04000280   MOV     ECX, 80020004
004054A2   .  894D A4       MOV     DWORD PTR SS:[EBP-5C], ECX
004054A5   .  B8 0A000000   MOV     EAX, 0A
004054AA   .  894D B4       MOV     DWORD PTR SS:[EBP-4C], ECX
004054AD   .  BF 08000000   MOV     EDI, 8
004054B2   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
004054B8   .  8D4D BC       LEA     ECX, DWORD PTR SS:[EBP-44]
004054BB   .  8945 9C       MOV     DWORD PTR SS:[EBP-64], EAX
004054BE   .  8945 AC       MOV     DWORD PTR SS:[EBP-54], EAX
004054C1   .  C745 84 08304>MOV     DWORD PTR SS:[EBP-7C], Register.0040>
004054C8   .  89BD 7CFFFFFF MOV     DWORD PTR SS:[EBP-84], EDI
004054CE   .  FFD6          CALL    ESI                                  
004054D0   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
004054D3   .  8D4D CC       LEA     ECX, DWORD PTR SS:[EBP-34]
004054D6   .  C745 94 D02F4>MOV     DWORD PTR SS:[EBP-6C], Register.0040>
004054DD   .  897D 8C       MOV     DWORD PTR SS:[EBP-74], EDI
004054E0   .  FFD6          CALL    ESI
004054E2   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
004054E5   .  8D55 AC       LEA     EDX, DWORD PTR SS:[EBP-54]
004054E8   .  51            PUSH    ECX
004054E9   .  8D45 BC       LEA     EAX, DWORD PTR SS:[EBP-44]
004054EC   .  52            PUSH    EDX
004054ED   .  50            PUSH    EAX
004054EE   .  8D4D CC       LEA     ECX, DWORD PTR SS:[EBP-34]
004054F1   .  6A 00         PUSH    0
004054F3   .  51            PUSH    ECX
004054F4   .  FF15 4C104000 CALL    DWORD PTR DS:[<&MSVBVM60.#595>]    
004054FA   .  8D55 9C       LEA     EDX, DWORD PTR SS:[EBP-64]
004054FD   .  8D45 AC       LEA     EAX, DWORD PTR SS:[EBP-54]
00405500   .  52            PUSH    EDX
00405501   .  8D4D BC       LEA     ECX, DWORD PTR SS:[EBP-44]
00405504   .  50            PUSH    EAX
00405505   .  8D55 CC       LEA     EDX, DWORD PTR SS:[EBP-34]
00405508   .  51            PUSH    ECX
00405509   .  52            PUSH    EDX
0040550A   .  E9 6E020000   JMP     Register.0040577D
0040550F   >  8B06          MOV     EAX, DWORD PTR DS:[ESI]
00405511   .  56            PUSH    ESI
00405512   .  FF90 08030000 CALL    DWORD PTR DS:[EAX+308]
00405518   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
0040551B   .  50            PUSH    EAX
0040551C   .  51            PUSH    ECX
0040551D   .  FFD3          CALL    EBX
0040551F   .  8BF8          MOV     EDI, EAX
00405521   .  8D45 E4       LEA     EAX, DWORD PTR SS:[EBP-1C]
00405524   .  50            PUSH    EAX
00405525   .  57            PUSH    EDI
00405526   .  8B17          MOV     EDX, DWORD PTR DS:[EDI]
00405528   .  FF92 A0000000 CALL    DWORD PTR DS:[EDX+A0]
0040552E   .  85C0          TEST    EAX, EAX
00405530   .  DBE2          FCLEX
00405532   .  7D 12         JGE     SHORT Register.00405546
00405534   .  68 A0000000   PUSH    0A0
00405539   .  68 AC2F4000   PUSH    Register.00402FAC
0040553E   .  57            PUSH    EDI
0040553F   .  50            PUSH    EAX
00405540   .  FF15 34104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaHresul>
00405546   >  8B45 E4       MOV     EAX, DWORD PTR SS:[EBP-1C]          

;  EAX<--001470BC,(UNICODE "14ZEP-EOGQS-RTBB2-XX1TK-P0ABM"<--ID

00405549   .  8B0E          MOV     ECX, DWORD PTR DS:[ESI]
0040554B   .  8D55 E0       LEA     EDX, DWORD PTR SS:[EBP-20]
0040554E   .  52            PUSH    EDX
0040554F   .  50            PUSH    EAX
00405550   .  56            PUSH    ESI
00405551   .  FF91 04070000 CALL    DWORD PTR DS:[ECX+704]  <--计算注册码的地方

F8--------->
|
004044C0   >  55            PUSH    EBP
004044C1   .  8BEC          MOV     EBP, ESP
004044C3   .  83EC 0C       SUB     ESP, 0C
004044C6   .  68 16124000   PUSH    <JMP.&MSVBVM60.__vbaExceptHandle>
004044CB   .  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
004044D1   .  50            PUSH    EAX
004044D2   .  64:8925 00000>MOV     DWORD PTR FS:[0], ESP
004044D9   .  81EC DC000000 SUB     ESP, 0DC
004044DF   .  53            PUSH    EBX
004044E0   .  56            PUSH    ESI
004044E1   .  57            PUSH    EDI
004044E2   .  8965 F4       MOV     DWORD PTR SS:[EBP-C], ESP
004044E5   .  C745 F8 90114>MOV     DWORD PTR SS:[EBP-8], Register.0>
004044EC   .  8B55 0C       MOV     EDX, DWORD PTR SS:[EBP+C]        

;  EDX<--001470BC,(UNICODE "14ZEP-EOGQS-RTBB2-XX1TK-P0ABM"<--ID

004044EF   .  8B3D D0104000 MOV     EDI, DWORD PTR DS:[<&MSVBVM60.__>
004044F5   .  33F6          XOR     ESI, ESI
004044F7   .  8D4D B4       LEA     ECX, DWORD PTR SS:[EBP-4C]
004044FA   .  8975 E8       MOV     DWORD PTR SS:[EBP-18], ESI
004044FD   .  8975 E0       MOV     DWORD PTR SS:[EBP-20], ESI
00404500   .  8975 DC       MOV     DWORD PTR SS:[EBP-24], ESI
00404503   .  8975 D8       MOV     DWORD PTR SS:[EBP-28], ESI
00404506   .  8975 B4       MOV     DWORD PTR SS:[EBP-4C], ESI
00404509   .  8975 B0       MOV     DWORD PTR SS:[EBP-50], ESI
0040450C   .  8975 AC       MOV     DWORD PTR SS:[EBP-54], ESI
0040450F   .  8975 9C       MOV     DWORD PTR SS:[EBP-64], ESI
00404512   .  8975 8C       MOV     DWORD PTR SS:[EBP-74], ESI
00404515   .  89B5 7CFFFFFF MOV     DWORD PTR SS:[EBP-84], ESI
0040451B   .  89B5 6CFFFFFF MOV     DWORD PTR SS:[EBP-94], ESI
00404521   .  89B5 5CFFFFFF MOV     DWORD PTR SS:[EBP-A4], ESI
00404527   .  89B5 3CFFFFFF MOV     DWORD PTR SS:[EBP-C4], ESI
0040452D   .  89B5 38FFFFFF MOV     DWORD PTR SS:[EBP-C8], ESI
00404533   .  FFD7          CALL    EDI                            
00404535   .  8B45 10       MOV     EAX, DWORD PTR SS:[EBP+10]
00404538   .  6A 11         PUSH    11
0040453A   .  8D4D C0       LEA     ECX, DWORD PTR SS:[EBP-40]
0040453D   .  68 942F4000   PUSH    Register.00402F94
00404542   .  51            PUSH    ECX
00404543   .  8930          MOV     DWORD PTR DS:[EAX], ESI
00404545   .  FF15 74104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaAr>
0040454B   .  8B55 B4       MOV     EDX, DWORD PTR SS:[EBP-4C]      

;  EDX<--001470BC,(UNICODE "14ZEP-EOGQS-RTBB2-XX1TK-P0ABM"<--ID

0040454E   .  52            PUSH    EDX
0040454F   .  FF15 10104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaLe>
00404555   .  BA 442F4000   MOV     EDX, Register.00402F44
0040455A   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
0040455D   .  8945 B8       MOV     DWORD PTR SS:[EBP-48], EAX
00404560   .  FFD7          CALL    EDI
00404562   .  BF 01000000   MOV     EDI, 1
00404567   .  8BDF          MOV     EBX, EDI
00404569   >  3B5D B8       CMP     EBX, DWORD PTR SS:[EBP-48]  ;  <--传送的长度=1d(29D)
0040456C   .  0F8F 95000000 JG      Register.00404607
00404572   .  8D45 B4       LEA     EAX, DWORD PTR SS:[EBP-4C]
00404575   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404578   .  8985 64FFFFFF MOV     DWORD PTR SS:[EBP-9C], EAX
0040457E   .  51            PUSH    ECX
0040457F   .  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404585   .  53            PUSH    EBX
00404586   .  8D45 8C       LEA     EAX, DWORD PTR SS:[EBP-74]
00404589   .  52            PUSH    EDX
0040458A   .  50            PUSH    EAX
0040458B   .  C745 A4 01000>MOV     DWORD PTR SS:[EBP-5C], 1
00404592   .  C745 9C 02000>MOV     DWORD PTR SS:[EBP-64], 2
00404599   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 4008
004045A3   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]  
004045A9   .  81FB C9000000 CMP     EBX, 0C9
004045AF   .  72 06         JB      SHORT Register.004045B7
004045B1   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
004045B7   >  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
004045BA   .  8D55 AC       LEA     EDX, DWORD PTR SS:[EBP-54]
004045BD   .  51            PUSH    ECX
004045BE   .  52            PUSH    EDX
004045BF   .  FF15 AC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
004045C5   .  50            PUSH    EAX
004045C6   .  FF15 24104000 CALL    DWORD PTR DS:[<&MSVBVM60.#516>]  
004045CC   .  8BC8          MOV     ECX, EAX
004045CE   .  FF15 84104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaUI>
004045D4   .  8B4D CC       MOV     ECX, DWORD PTR SS:[EBP-34]
004045D7   .  880419        MOV     BYTE PTR DS:[ECX+EBX], AL    ;  AL=31 ('1')
004045DA   .  8D4D AC       LEA     ECX, DWORD PTR SS:[EBP-54]
004045DD   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
004045E3   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
004045E6   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
004045E9   .  52            PUSH    EDX
004045EA   .  50            PUSH    EAX
004045EB   .  6A 02         PUSH    2
004045ED   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
004045F3   .  8BCF          MOV     ECX, EDI
004045F5   .  83C4 0C       ADD     ESP, 0C
004045F8   .  03CB          ADD     ECX, EBX
004045FA   .  0F80 7C070000 JO      Register.00404D7C
00404600   .  8BD9          MOV     EBX, ECX
00404602   .^ E9 62FFFFFF   JMP     Register.00404569                

;上面的循环把软件号传送到内存地址00149F59开始的地址中

00404607   >  8B5D 08       MOV     EBX, DWORD PTR SS:[EBP+8]
0040460A   .  8D55 B0       LEA     EDX, DWORD PTR SS:[EBP-50]
0040460D   .  52            PUSH    EDX
0040460E   .  56            PUSH    ESI
0040460F   .  8B43 34       MOV     EAX, DWORD PTR DS:[EBX+34]
00404612   .  56            PUSH    ESI
00404613   .  68 04800000   PUSH    8004
00404618   .  50            PUSH    EAX
00404619   .  E8 96E6FFFF   CALL    Register.00402CB4
0040461E   .  8B3D 30104000 MOV     EDI, DWORD PTR DS:[<&MSVBVM60.__>
00404624   .  8985 38FFFFFF MOV     DWORD PTR SS:[EBP-C8], EAX
0040462A   .  FFD7          CALL    EDI                              
0040462C   .  39B5 38FFFFFF CMP     DWORD PTR SS:[EBP-C8], ESI
00404632   .  0F84 BD060000 JE      Register.00404CF5
00404638   .  8B55 CC       MOV     EDX, DWORD PTR SS:[EBP-34]      

;  EDX<--001470BC,(UNICODE "14ZEP-EOGQS-RTBB2-XX1TK-P0ABM"<--ID

0040463B   .  8B4D B8       MOV     ECX, DWORD PTR SS:[EBP-48]
0040463E   .  8B45 B0       MOV     EAX, DWORD PTR SS:[EBP-50]
00404641   .  56            PUSH    ESI
00404642   .  42            INC     EDX
00404643   .  51            PUSH    ECX
00404644   .  52            PUSH    EDX
00404645   .  50            PUSH    EAX
00404646   .  E8 B1E6FFFF   CALL    Register.00402CFC
0040464B   .  8985 38FFFFFF MOV     DWORD PTR SS:[EBP-C8], EAX
00404651   .  FFD7          CALL    EDI
00404653   .  39B5 38FFFFFF CMP     DWORD PTR SS:[EBP-C8], ESI
00404659   .  0F84 96060000 JE      Register.00404CF5
0040465F   .  8B55 B0       MOV     EDX, DWORD PTR SS:[EBP-50]
00404662   .  8B43 34       MOV     EAX, DWORD PTR DS:[EBX+34]
00404665   .  8D4D E8       LEA     ECX, DWORD PTR SS:[EBP-18]
00404668   .  51            PUSH    ECX
00404669   .  56            PUSH    ESI
0040466A   .  52            PUSH    EDX
0040466B   .  68 01680000   PUSH    6801
00404670   .  50            PUSH    EAX
00404671   .  E8 CEE6FFFF   CALL    Register.00402D44                

;  这个CALL用ID 计算出下面要用的值

这个计算的地方不好找到是通过ADVAPI32领空来到rsabase领空中计算的,所以一般的跟踪方法无法到达这里,还是用内存断点的办法:在ADVAPI32领空中看到程序取了ID 的最后一位单独放到一个内存地址中,在内存数据窗口中找到这个地址后,先用ALT+B调出断点窗口,将原来的断点全部关闭(防止干扰).在选择内存地址中的数据,下内存访问断点就能跟踪到这里:

F8------->
rsabase领空
|
7CA14370    56              PUSH    ESI
7CA14371    57              PUSH    EDI
7CA14372    53              PUSH    EBX
7CA14373    55              PUSH    EBP
7CA14374    8B5424 18       MOV     EDX, DWORD PTR SS:[ESP+18]
7CA14378    81EC 40010000   SUB     ESP, 140
7CA1437E    BE 10000000     MOV     ESI, 10
7CA14383    BF 00FF00FF     MOV     EDI, FF00FF00
7CA14388    BD FF00FF00     MOV     EBP, 0FF00FF
7CA1438D    8D4C24 FC       LEA     ECX, DWORD PTR SS:[ESP-4]
7CA14391    8B02            MOV     EAX, DWORD PTR DS:[EDX]                

; EAX<--DS:[EDX]=DS:[14A530]=4D ('M')<--ID 的最后一位

7CA14393    83C2 04         ADD     EDX, 4
7CA14396    8BD8            MOV     EBX, EAX
7CA14398    23C7            AND     EAX, EDI
7CA1439A    23DD            AND     EBX, EBP
7CA1439C    83C1 04         ADD     ECX, 4
7CA1439F    C1C0 08         ROL     EAX, 8
7CA143A2    C1CB 08         ROR     EBX, 8
7CA143A5    33C3            XOR     EAX, EBX
7CA143A7    4E              DEC     ESI
7CA143A8    8901            MOV     DWORD PTR DS:[ECX], EAX
7CA143AA  ^ 75 E5           JNZ     SHORT rsabase.7CA14391
7CA143AC    8BAC24 54010000 MOV     EBP, DWORD PTR SS:[ESP+154]
7CA143B3    8D4C24 08       LEA     ECX, DWORD PTR SS:[ESP+8]
7CA143B7    BA 20000000     MOV     EDX, 20
7CA143BC    33C0            XOR     EAX, EAX
7CA143BE    33DB            XOR     EBX, EBX
7CA143C0    8B41 F8         MOV     EAX, DWORD PTR DS:[ECX-8]              

; EAX<--DS:[12F05C]=31345A45 ("14ZE")|<--4751532D

7CA143C3    8B59 FC         MOV     EBX, DWORD PTR DS:[ECX-4]              

; EBX<--DS:[12F060]=502D454F ("P-EO")

7CA143C6    8B31            MOV     ESI, DWORD PTR DS:[ECX]                

; ESI<--DS:[12F064]=4751532D ("GQS-")

7CA143C8    8B79 04         MOV     EDI, DWORD PTR DS:[ECX+4]              

; EDI<--DS:[12F068]=52544242 ("RTBB")

7CA143CB    33C6            XOR     EAX, ESI
7CA143CD    33DF            XOR     EBX, EDI
7CA143CF    8B71 18         MOV     ESI, DWORD PTR DS:[ECX+18]  
7CA143D2    8B79 1C         MOV     EDI, DWORD PTR DS:[ECX+1C]  
7CA143D5    33C6            XOR     EAX, ESI
7CA143D7    33DF            XOR     EBX, EDI
7CA143D9    8B71 2C         MOV     ESI, DWORD PTR DS:[ECX+2C]            
7CA143DC    8B79 30         MOV     EDI, DWORD PTR DS:[ECX+30]        
7CA143DF    33C6            XOR     EAX, ESI
7CA143E1    83C1 08         ADD     ECX, 8
7CA143E4    D1C0            ROL     EAX, 1
7CA143E6    33DF            XOR     EBX, EDI
7CA143E8    D1C3            ROL     EBX, 1
7CA143EA    8941 30         MOV     DWORD PTR DS:[ECX+30], EAX
7CA143ED    4A              DEC     EDX                         ; EDX=1F 循环的次数
7CA143EE    8959 34         MOV     DWORD PTR DS:[ECX+34], EBX
7CA143F1  ^ 75 CD           JNZ     SHORT rsabase.7CA143C0
7CA143F3    8B45 00         MOV     EAX, DWORD PTR SS:[EBP]     ; EAX<--SS:[14A4F8]=67452301
7CA143F6    8B5D 04         MOV     EBX, DWORD PTR SS:[EBP+4]   ; EBX<--SS:[14A4FC]=EFCDAB89
7CA143F9    8B4D 08         MOV     ECX, DWORD PTR SS:[EBP+8]   ; ECX<---SS:[14A500]=98BADCFE
7CA143FC    8B55 0C         MOV     EDX, DWORD PTR SS:[EBP+C]   ; EDX<---SS:[14A504]=10325476
7CA143FF    8B7D 10         MOV     EDI, DWORD PTR SS:[EBP+10]  ; EDI<---SS:[14A508]=C3D2E1F0
7CA14402    8BE9            MOV     EBP, ECX
7CA14404    33EA            XOR     EBP, EDX
7CA14406    23EB            AND     EBP, EBX
7CA14408    8BF0            MOV     ESI, EAX
7CA1440A    C1C6 05         ROL     ESI, 5
7CA1440D    03FE            ADD     EDI, ESI
7CA1440F    8B3424          MOV     ESI, DWORD PTR SS:[ESP]      

; ESI=31345A45 <--ID

7CA14412    D1CB            ROR     EBX, 1
7CA14414    33EA            XOR     EBP, EDX
7CA14416    D1CB            ROR     EBX, 1
7CA14418    8DBC3E 9979825A LEA     EDI, DWORD PTR DS:[ESI+EDI+5A827999]
7CA1441F    03FD            ADD     EDI, EBP
7CA14421    8BF3            MOV     ESI, EBX
7CA14423    33F1            XOR     ESI, ECX
7CA14425    8BEF            MOV     EBP, EDI
7CA14427    C1C5 05         ROL     EBP, 5
7CA1442A    23F0            AND     ESI, EAX
7CA1442C    03D5            ADD     EDX, EBP
7CA1442E    D1C8            ROR     EAX, 1
7CA14430    8B6C24 04       MOV     EBP, DWORD PTR SS:[ESP+4]  

; EBP<---SS:[12F060]=502D454F <--ID

7CA14434    D1C8            ROR     EAX, 1
7CA14436    33F1            XOR     ESI, ECX
7CA14438    8D9415 9979825A LEA     EDX, DWORD PTR SS:[EBP+EDX+5A827999]
7CA1443F    8BE8            MOV     EBP, EAX
7CA14441    03D6            ADD     EDX, ESI
7CA14443    33EB            XOR     EBP, EBX
7CA14445    23EF            AND     EBP, EDI
7CA14447    8BF2            MOV     ESI, EDX
7CA14449    C1C6 05         ROL     ESI, 5
7CA1444C    03CE            ADD     ECX, ESI
7CA1444E    8B7424 08       MOV     ESI, DWORD PTR SS:[ESP+8]  

; ESI<--SS:[12F064]=4751532D <--ID

7CA14452    D1CF            ROR     EDI, 1
7CA14454    33EB            XOR     EBP, EBX
7CA14456    D1CF            ROR     EDI, 1
7CA14458    8D8C0E 9979825A LEA     ECX, DWORD PTR DS:[ESI+ECX+5A827999]
7CA1445F    03CD            ADD     ECX, EBP
7CA14461    8BF7            MOV     ESI, EDI
7CA14463    33F0            XOR     ESI, EAX
7CA14465    8BE9            MOV     EBP, ECX
7CA14467    C1C5 05         ROL     EBP, 5
7CA1446A    23F2            AND     ESI, EDX
7CA1446C    03DD            ADD     EBX, EBP
7CA1446E    D1CA            ROR     EDX, 1
7CA14470    8B6C24 0C       MOV     EBP, DWORD PTR SS:[ESP+C]    

; EBP<--SS:[12F068]=52544242 <--ID

7CA14474    D1CA            ROR     EDX, 1
7CA14476    33F0            XOR     ESI, EAX
7CA14478    8D9C1D 9979825A LEA     EBX, DWORD PTR SS:[EBP+EBX+5A827999]
7CA1447F    8BEA            MOV     EBP, EDX
7CA14481    03DE            ADD     EBX, ESI
7CA14483    33EF            XOR     EBP, EDI
7CA14485    23E9            AND     EBP, ECX
7CA14487    8BF3            MOV     ESI, EBX
7CA14489    C1C6 05         ROL     ESI, 5
7CA1448C    03C6            ADD     EAX, ESI
7CA1448E    8B7424 10       MOV     ESI, DWORD PTR SS:[ESP+10]    

; ESI<--SS:[12F06C]=322D5858<--ID

7CA14492    D1C9            ROR     ECX, 1
7CA14494    33EF            XOR     EBP, EDI
7CA14496    D1C9            ROR     ECX, 1
7CA14498    8D8406 9979825A LEA     EAX, DWORD PTR DS:[ESI+EAX+5A827999]
7CA1449F    03C5            ADD     EAX, EBP
7CA144A1    8BF1            MOV     ESI, ECX
7CA144A3    33F2            XOR     ESI, EDX
7CA144A5    8BE8            MOV     EBP, EAX
7CA144A7    C1C5 05         ROL     EBP, 5
7CA144AA    23F3            AND     ESI, EBX
7CA144AC    03FD            ADD     EDI, EBP
7CA144AE    D1CB            ROR     EBX, 1
7CA144B0    8B6C24 14       MOV     EBP, DWORD PTR SS:[ESP+14]    

; EBP<--SS:[12F070]=31544B2D <--ID

7CA144B4    D1CB            ROR     EBX, 1
7CA144B6    33F2            XOR     ESI, EDX
7CA144B8    8DBC3D 9979825A LEA     EDI, DWORD PTR SS:[EBP+EDI+5A827999]
7CA144BF    8BEB            MOV     EBP, EBX
7CA144C1    03FE            ADD     EDI, ESI
7CA144C3    33E9            XOR     EBP, ECX
7CA144C5    23E8            AND     EBP, EAX
7CA144C7    8BF7            MOV     ESI, EDI
7CA144C9    C1C6 05         ROL     ESI, 5
7CA144CC    03D6            ADD     EDX, ESI
7CA144CE    8B7424 18       MOV     ESI, DWORD PTR SS:[ESP+18]      

; ESI<--SS:[12F074]=50304142<--ID

7CA144D2    D1C8            ROR     EAX, 1
7CA144D4    33E9            XOR     EBP, ECX
7CA144D6    D1C8            ROR     EAX, 1
7CA144D8    8D9416 9979825A LEA     EDX, DWORD PTR DS:[ESI+EDX+5A827999]
7CA144DF    03D5            ADD     EDX, EBP
7CA144E1    8BF0            MOV     ESI, EAX
7CA144E3    33F3            XOR     ESI, EBX
7CA144E5    8BEA            MOV     EBP, EDX
7CA144E7    C1C5 05         ROL     EBP, 5
7CA144EA    23F7            AND     ESI, EDI
7CA144EC    03CD            ADD     ECX, EBP
7CA144EE    D1CF            ROR     EDI, 1
7CA144F0    8B6C24 1C       MOV     EBP, DWORD PTR SS:[ESP+1C]        

; EBP<--SS:[12F078]=4D800000 <--ID的第一位加800000

7CA144F4    D1CF            ROR     EDI, 1
7CA144F6    33F3            XOR     ESI, EBX
7CA144F8    8D8C0D 9979825A LEA     ECX, DWORD PTR SS:[EBP+ECX+5A827999]
7CA144FF    8BEF            MOV     EBP, EDI
7CA14501    03CE            ADD     ECX, ESI
7CA14503    33E8            XOR     EBP, EAX
7CA14505    23EA            AND     EBP, EDX
7CA14507    8BF1            MOV     ESI, ECX
7CA14509    C1C6 05         ROL     ESI, 5
7CA1450C    03DE            ADD     EBX, ESI
7CA1450E    8B7424 20       MOV     ESI, DWORD PTR SS:[ESP+20]     ; ESI=0
……
7CA14EC6    03FD            ADD     EDI, EBP
7CA14EC8    8906            MOV     DWORD PTR DS:[ESI], EAX       ; EAX=BF1AEB0F ==>DS:[14A4F8]
7CA14ECA    895E 04         MOV     DWORD PTR DS:[ESI+4], EBX     ; EBX=154344B9
7CA14ECD    894E 08         MOV     DWORD PTR DS:[ESI+8], ECX     ; ECX=CE1EAC47
7CA14ED0    8956 0C         MOV     DWORD PTR DS:[ESI+C], EDX     ; EDX=67E14CDD
7CA14ED3    897E 10         MOV     DWORD PTR DS:[ESI+10], EDI    ; EDI=95CE0D8F
7CA14ED6    5D              POP     EBP                                    

; // 经过上面用ID计算的值==>DS:[14A4F8]

7CA14ED7    5B              POP     EBX
7CA14ED8    5F              POP     EDI
7CA14ED9    5E              POP     ESI
7CA14EDA    C2 0800         RETN    8


-------------
下面进行

|
7CA15A40    56              PUSH    ESI
7CA15A41    8B7424 10       MOV     ESI, DWORD PTR SS:[ESP+10]
7CA15A45    85F6            TEST    ESI, ESI
7CA15A47    76 33           JBE     SHORT rsabase.7CA15A7C
7CA15A49    8B4424 08       MOV     EAX, DWORD PTR SS:[ESP+8]
7CA15A4D    8D48 01         LEA     ECX, DWORD PTR DS:[EAX+1]
7CA15A50    8B4424 0C       MOV     EAX, DWORD PTR SS:[ESP+C]
7CA15A54    8B10            MOV     EDX, DWORD PTR DS:[EAX]
7CA15A56    83C0 04         ADD     EAX, 4
7CA15A59    C1EA 18         SHR     EDX, 18
7CA15A5C    8851 FF         MOV     BYTE PTR DS:[ECX-1], DL
7CA15A5F    8B50 FC         MOV     EDX, DWORD PTR DS:[EAX-4]
7CA15A62    C1EA 10         SHR     EDX, 10
7CA15A65    8811            MOV     BYTE PTR DS:[ECX], DL
7CA15A67    8B50 FC         MOV     EDX, DWORD PTR DS:[EAX-4]
7CA15A6A    C1EA 08         SHR     EDX, 8
7CA15A6D    8851 01         MOV     BYTE PTR DS:[ECX+1], DL
7CA15A70    8A50 FC         MOV     DL, BYTE PTR DS:[EAX-4]
7CA15A73    8851 02         MOV     BYTE PTR DS:[ECX+2], DL
7CA15A76    83C1 04         ADD     ECX, 4
7CA15A79    4E              DEC     ESI
7CA15A7A  ^ 75 D8           JNZ     SHORT rsabase.7CA15A54
7CA15A7C    5E              POP     ESI
7CA15A7D    C2 0C00         RETN    0C                        

//这段用上面的值重新计算把计算的值==>DS:[0014E4]


<--------------RETN
|
00404676   .  8985 38FFFFFF MOV     DWORD PTR SS:[EBP-C8], EAX
0040467C   .  FFD7          CALL    EDI
0040467E   .  39B5 38FFFFFF CMP     DWORD PTR SS:[EBP-C8], ESI
00404684   .  0F84 6B060000 JE      Register.00404CF5
0040468A   .  68 A4264000   PUSH    Register.004026A4                

;  UNICODE "OfficeCenterFromMindswareMadeByKenny"<--参数

0040468F   .  FF15 10104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaLe>;  MSVBVM60.__vbaLenBstr
00404695   .  BF 01000000   MOV     EDI, 1
0040469A   .  8945 E0       MOV     DWORD PTR SS:[EBP-20], EAX
0040469D   .  8985 20FFFFFF MOV     DWORD PTR SS:[EBP-E0], EAX
004046A3   .  8BDF          MOV     EBX, EDI
004046A5   >  3B9D 20FFFFFF CMP     EBX, DWORD PTR SS:[EBP-E0]
004046AB   .  0F8F AF000000 JG      Register.00404760
004046B1   .  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
004046B7   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
004046BA   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
004046C1   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
004046C8   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>

;  UNICODE "OfficeCenterFromMindswareMadeByKenny"

004046D2   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
004046DC   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>;  MSVBVM60.__vbaVarDup
004046E2   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
004046E5   .  8D55 9C       LEA     EDX, DWORD PTR SS:[EBP-64]
004046E8   .  51            PUSH    ECX
004046E9   .  53            PUSH    EBX
004046EA   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
004046F0   .  52            PUSH    EDX
004046F1   .  50            PUSH    EAX
004046F2   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]  ;  MSVBVM60.rtcMidCharVar
004046F8   .  81FB C9000000 CMP     EBX, 0C9
004046FE   .  72 06         JB      SHORT Register.00404706
00404700   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>;  MSVBVM60.__vbaGenerateBoundsError
00404706   >  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
0040470C   .  8D55 AC       LEA     EDX, DWORD PTR SS:[EBP-54]
0040470F   .  51            PUSH    ECX
00404710   .  52            PUSH    EDX
00404711   .  FF15 AC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrVarVal
00404717   .  50            PUSH    EAX
00404718   .  FF15 24104000 CALL    DWORD PTR DS:[<&MSVBVM60.#516>]  ;  MSVBVM60.rtcAnsivalueBstr
0040471E   .  8BC8          MOV     ECX, EAX
00404720   .  FF15 84104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaUI>;  MSVBVM60.__vbaUI1I2
00404726   .  8B4D CC       MOV     ECX, DWORD PTR SS:[EBP-34]
00404729   .  880419        MOV     BYTE PTR DS:[ECX+EBX], AL
0040472C   .  8D4D AC       LEA     ECX, DWORD PTR SS:[EBP-54]
0040472F   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>;  MSVBVM60.__vbaFreeStr
00404735   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
0040473B   .  8D45 8C       LEA     EAX, DWORD PTR SS:[EBP-74]
0040473E   .  52            PUSH    EDX
0040473F   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404742   .  50            PUSH    EAX
00404743   .  51            PUSH    ECX
00404744   .  6A 03         PUSH    3
00404746   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>;  MSVBVM60.__vbaFreeVarList
0040474C   .  8BD7          MOV     EDX, EDI
0040474E   .  83C4 10       ADD     ESP, 10
00404751   .  03D3          ADD     EDX, EBX
00404753   .  0F80 23060000 JO      Register.00404D7C
00404759   .  8BDA          MOV     EBX, EDX
0040475B   .^ E9 45FFFFFF   JMP     Register.004046A5

;  //以上传送UNICODE "OfficeCenterFromMindswareMadeByKenny"

00404760   >  8B4D CC       MOV     ECX, DWORD PTR SS:[EBP-34]      
00404763   .  8B55 E8       MOV     EDX, DWORD PTR SS:[EBP-18]
00404766   .  8D45 E0       LEA     EAX, DWORD PTR SS:[EBP-20]
00404769   .  68 C8000000   PUSH    0C8
0040476E   .  41            INC     ECX
0040476F   .  50            PUSH    EAX
00404770   .  51            PUSH    ECX
00404771   .  56            PUSH    ESI
00404772   .  6A FF         PUSH    -1
00404774   .  56            PUSH    ESI
00404775   .  52            PUSH    EDX
00404776   .  E8 11E6FFFF   CALL    Register.00402D8C                

;  //用ID 计算的值与字符串"OfficeCenterFromMindswareMadeByKenny"再次进行计算

F8----------->
|
7CA11920    8B4424 04       MOV     EAX, DWORD PTR SS:[ESP+4]
7CA11924    33C9            XOR     ECX, ECX
7CA11926    8948 2C         MOV     DWORD PTR DS:[EAX+2C], ECX
7CA11929    8948 30         MOV     DWORD PTR DS:[EAX+30], ECX
7CA1192C    C740 18 0123456>MOV     DWORD PTR DS:[EAX+18], 67452301   <--传递参数
7CA11933    C740 1C 89ABCDE>MOV     DWORD PTR DS:[EAX+1C], EFCDAB89
7CA1193A    C740 20 FEDCBA9>MOV     DWORD PTR DS:[EAX+20], 98BADCFE
7CA11941    C740 24 7654321>MOV     DWORD PTR DS:[EAX+24], 10325476
7CA11948    C740 28 F0E1D2C>MOV     DWORD PTR DS:[EAX+28], C3D2E1F0
7CA1194F    C2 0400         RETN    4

7CA114F0    53              PUSH    EBX
7CA114F1    56              PUSH    ESI
7CA114F2    57              PUSH    EDI
7CA114F3    55              PUSH    EBP
7CA114F4    33C9            XOR     ECX, ECX
7CA114F6    33D2            XOR     EDX, EDX
7CA114F8    8B7424 14       MOV     ESI, DWORD PTR SS:[ESP+14]
7CA114FC    8B6C24 18       MOV     EBP, DWORD PTR SS:[ESP+18]
7CA11500    8B7C24 1C       MOV     EDI, DWORD PTR SS:[ESP+1C]
7CA11504    8A8E 00010000   MOV     CL, BYTE PTR DS:[ESI+100]
7CA1150A    8A96 01010000   MOV     DL, BYTE PTR DS:[ESI+101]
7CA11510    85ED            TEST    EBP, EBP
7CA11512    74 2B           JE      SHORT rsabase.7CA1153F
7CA11514    41              INC     ECX
7CA11515    BB FF000000     MOV     EBX, 0FF
7CA1151A    23CB            AND     ECX, EBX
7CA1151C    33C0            XOR     EAX, EAX
7CA1151E    8A040E          MOV     AL, BYTE PTR DS:[ESI+ECX]
7CA11521    03D0            ADD     EDX, EAX
7CA11523    23D3            AND     EDX, EBX
7CA11525    33DB            XOR     EBX, EBX
7CA11527    8A1C16          MOV     BL, BYTE PTR DS:[ESI+EDX]
7CA1152A    881C0E          MOV     BYTE PTR DS:[ESI+ECX], BL
7CA1152D    880416          MOV     BYTE PTR DS:[ESI+EDX], AL
7CA11530    02C3            ADD     AL, BL
7CA11532    8A1F            MOV     BL, BYTE PTR DS:[EDI]                  

; BL=DS:[EDI]=DS:[149F59]=4F ('O')<--参数串的第一位

7CA11534    8A0406          MOV     AL, BYTE PTR DS:[ESI+EAX]            

; AL=DS:[ESI+EAX]=07  ESI=0014A640   EAX=80

7CA11537    32D8            XOR     BL, AL
7CA11539    881F            MOV     BYTE PTR DS:[EDI], BL
7CA1153B    47              INC     EDI
7CA1153C    4D              DEC     EBP
7CA1153D  ^ 75 D5           JNZ     SHORT rsabase.7CA11514
7CA1153F    5D              POP     EBP
7CA11540    5F              POP     EDI
7CA11541    8D86 00010000   LEA     EAX, DWORD PTR DS:[ESI+100]
7CA11547    5E              POP     ESI
7CA11548    8808            MOV     BYTE PTR DS:[EAX], CL
7CA1154A    5B              POP     EBX
7CA1154B    8850 01         MOV     BYTE PTR DS:[EAX+1], DL
7CA1154E    C2 0C00         RETN    0C
7CA11551    53              PUSH    EBX
7CA11552    B8 00010203     MOV     EAX, 3020100
7CA11557    56              PUSH    ESI
7CA11558    B9 40000000     MOV     ECX, 40
7CA1155D    8B7424 0C       MOV     ESI, DWORD PTR SS:[ESP+C]
7CA11561    57              PUSH    EDI
7CA11562    8BD6            MOV     EDX, ESI
7CA11564    55              PUSH    EBP
7CA11565    8902            MOV     DWORD PTR DS:[EDX], EAX
7CA11567    83C2 04         ADD     EDX, 4
7CA1156A    05 04040404     ADD     EAX, 4040404
7CA1156F    49              DEC     ECX
7CA11570  ^ 75 F3           JNZ     SHORT rsabase.7CA11565
7CA11572    33C9            XOR     ECX, ECX
7CA11574    33FF            XOR     EDI, EDI
7CA11576    8B6C24 1C       MOV     EBP, DWORD PTR SS:[ESP+1C]
7CA1157A    888E 00010000   MOV     BYTE PTR DS:[ESI+100], CL
7CA11580    888E 01010000   MOV     BYTE PTR DS:[ESI+101], CL
7CA11586    33DB            XOR     EBX, EBX
7CA11588    33D2            XOR     EDX, EDX
7CA1158A    33C0            XOR     EAX, EAX
7CA1158C    8A1437          MOV     DL, BYTE PTR DS:[EDI+ESI]  <--上面传送的固定参数
7CA1158F    8A440D 00       MOV     AL, BYTE PTR SS:[EBP+ECX]  <--ID计算的值  
7CA11593    02D8            ADD     BL, AL
7CA11595    41              INC     ECX
7CA11596    02DA            ADD     BL, DL
7CA11598    47              INC     EDI
7CA11599    8A0433          MOV     AL, BYTE PTR DS:[EBX+ESI]  <---用上面值来查表取值
7CA1159C    884437 FF       MOV     BYTE PTR DS:[EDI+ESI-1], AL
7CA115A0    394C24 18       CMP     DWORD PTR SS:[ESP+18], ECX
7CA115A4    881433          MOV     BYTE PTR DS:[EBX+ESI], DL
7CA115A7    75 02           JNZ     SHORT rsabase.7CA115AB
7CA115A9    33C9            XOR     ECX, ECX
7CA115AB    81FF 00010000   CMP     EDI, 100
7CA115B1  ^ 72 D5           JB      SHORT rsabase.7CA11588
7CA115B3    5D              POP     EBP
7CA115B4    5F              POP     EDI
7CA115B5    5E              POP     ESI
7CA115B6    5B              POP     EBX
7CA115B7    C2 0C00         RETN    0C

不怕死的就来看看算法,我投降了^_^


<---------RETN
|
0040477B   .  8985 38FFFFFF MOV     DWORD PTR SS:[EBP-C8], EAX
00404781   .  FF15 30104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSe>;  MSVBVM60.__vbaSetSystemError
00404787   .  39B5 38FFFFFF CMP     DWORD PTR SS:[EBP-C8], ESI
0040478D   .  0F84 62050000 JE      Register.00404CF5
00404793   .  BA 442F4000   MOV     EDX, Register.00402F44
00404798   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
0040479B   .  FF15 D0104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>;  MSVBVM60.__vbaStrCopy
004047A1   .  8B1D 14114000 MOV     EBX, DWORD PTR DS:[<&MSVBVM60.__>;  MSVBVM60.__vbaStrMove
004047A7   .  33FF          XOR     EDI, EDI
004047A9   >  B8 18000000   MOV     EAX, 18                          ;  //开始计算取值
004047AE   .  3BF8          CMP     EDI, EAX
004047B0   .  0F8F 17050000 JG      Register.00404CCD                ;  //计算完就出来
004047B6   .  8B45 D8       MOV     EAX, DWORD PTR SS:[EBP-28]
004047B9   .  8BF7          MOV     ESI, EDI
004047BB   .  83C6 02       ADD     ESI, 2
004047BE   .  8985 44FFFFFF MOV     DWORD PTR SS:[EBP-BC], EAX
004047C4   .  0F80 B2050000 JO      Register.00404D7C
004047CA   .  81FE C9000000 CMP     ESI, 0C9
004047D0   .  C785 3CFFFFFF>MOV     DWORD PTR SS:[EBP-C4], 8
004047DA   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
004047E1   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
004047E8   .  72 06         JB      SHORT Register.004047F0
004047EA   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
004047F0   >  8BC7          MOV     EAX, EDI
004047F2   .  83C0 03       ADD     EAX, 3
004047F5   .  0F80 81050000 JO      Register.00404D7C
004047FB   .  3D C9000000   CMP     EAX, 0C9
00404800   .  8985 30FFFFFF MOV     DWORD PTR SS:[EBP-D0], EAX
00404806   .  72 06         JB      SHORT Register.0040480E
00404808   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
0040480E   >  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404814   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404817   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>

;  UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"<--参数

00404821   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
0040482B   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404831   .  8B45 CC       MOV     EAX, DWORD PTR SS:[EBP-34]
00404834   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404837   .  51            PUSH    ECX
00404838   .  66:33C9       XOR     CX, CX
0040483B   .  8A1430        MOV     DL, BYTE PTR DS:[EAX+ESI]        ;  从的三位开始取参数
0040483E   .  80E2 03       AND     DL, 3
00404841   .  8ACA          MOV     CL, DL
00404843   .  8B95 30FFFFFF MOV     EDX, DWORD PTR SS:[EBP-D0]
00404849   .  66:6BC9 10    IMUL    CX, CX, 10
0040484D   .  8A0410        MOV     AL, BYTE PTR DS:[EAX+EDX]
00404850   .  0F80 26050000 JO      Register.00404D7C
00404856   .  C0E8 04       SHR     AL, 4
00404859   .  66:33D2       XOR     DX, DX
0040485C   .  8AD0          MOV     DL, AL
0040485E   .  0BCA          OR      ECX, EDX
00404860   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
00404866   .  66:83C1 01    ADD     CX, 1
0040486A   .  0F80 0C050000 JO      Register.00404D7C
00404870   .  0FBFC1        MOVSX   EAX, CX
00404873   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404876   .  50            PUSH    EAX
00404877   .  51            PUSH    ECX
00404878   .  52            PUSH    EDX
00404879   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]  ;  MSVBVM60.rtcMidCharVar
0040487F   .  8D85 3CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-C4]
00404885   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
0040488B   .  50            PUSH    EAX
0040488C   .  8D95 6CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-94]
00404892   .  51            PUSH    ECX
00404893   .  52            PUSH    EDX
00404894   .  FF15 EC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
0040489A   .  50            PUSH    EAX
0040489B   .  FF15 14104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
004048A1   .  8BD0          MOV     EDX, EAX
004048A3   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
004048A6   .  FFD3          CALL    EBX
004048A8   .  8D85 6CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-94]
004048AE   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
004048B4   .  50            PUSH    EAX
004048B5   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
004048B8   .  51            PUSH    ECX
004048B9   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
004048BC   .  52            PUSH    EDX
004048BD   .  50            PUSH    EAX
004048BE   .  6A 04         PUSH    4
004048C0   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
004048C6   .  8B4D D8       MOV     ECX, DWORD PTR SS:[EBP-28]
004048C9   .  8BF7          MOV     ESI, EDI
004048CB   .  83C4 14       ADD     ESP, 14
004048CE   .  83C6 03       ADD     ESI, 3
004048D1   .  0F80 A5040000 JO      Register.00404D7C
004048D7   .  81FE C9000000 CMP     ESI, 0C9
004048DD   .  898D 44FFFFFF MOV     DWORD PTR SS:[EBP-BC], ECX
004048E3   .  C785 3CFFFFFF>MOV     DWORD PTR SS:[EBP-C4], 8
004048ED   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
004048F4   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
004048FB   .  72 06         JB      SHORT Register.00404903
004048FD   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
00404903   >  8BC7          MOV     EAX, EDI
00404905   .  83C0 04       ADD     EAX, 4
00404908   .  0F80 6E040000 JO      Register.00404D7C
0040490E   .  3D C9000000   CMP     EAX, 0C9
00404913   .  8985 30FFFFFF MOV     DWORD PTR SS:[EBP-D0], EAX
00404919   .  72 06         JB      SHORT Register.00404921
0040491B   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
00404921   >  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404927   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
0040492A   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>

;  UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4" <--参数

00404934   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
0040493E   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404944   .  8B45 CC       MOV     EAX, DWORD PTR SS:[EBP-34]
00404947   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
0040494A   .  52            PUSH    EDX
0040494B   .  66:33D2       XOR     DX, DX
0040494E   .  8A0C30        MOV     CL, BYTE PTR DS:[EAX+ESI]
00404951   .  80E1 0F       AND     CL, 0F
00404954   .  8AD1          MOV     DL, CL
00404956   .  8B8D 30FFFFFF MOV     ECX, DWORD PTR SS:[EBP-D0]
0040495C   .  66:6BD2 04    IMUL    DX, DX, 4
00404960   .  8A0408        MOV     AL, BYTE PTR DS:[EAX+ECX]
00404963   .  0F80 13040000 JO      Register.00404D7C
00404969   .  C0E8 06       SHR     AL, 6
0040496C   .  66:33C9       XOR     CX, CX
0040496F   .  8AC8          MOV     CL, AL
00404971   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
00404974   .  0BD1          OR      EDX, ECX
00404976   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
0040497C   .  66:83C2 01    ADD     DX, 1
00404980   .  0F80 F6030000 JO      Register.00404D7C
00404986   .  0FBFD2        MOVSX   EDX, DX
00404989   .  52            PUSH    EDX
0040498A   .  50            PUSH    EAX
0040498B   .  51            PUSH    ECX
0040498C   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]  

F8-------->
|
733B45C3    50              PUSH    EAX
733B45C4    8B45 0C         MOV     EAX, DWORD PTR SS:[EBP+C]   <--这里把计算的值取出
733B45C7    8D4400 FF       LEA     EAX, DWORD PTR DS:[EAX+EAX-1] <--再次计算
733B45CB    50              PUSH    EAX
733B45CC    FF75 08         PUSH    DWORD PTR SS:[EBP+8]    

<---参数入栈 UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

733B45CF    E8 1E000000     CALL    MSVBVM60.rtcMidBstr       <---这里应该是取值的地方
733B45D4    C9              LEAVE
733B45D5    C2 0C00         RETN    0C

CALL    MSVBVM60.rtcMidBstr       <---这里应该是取值的地方

733B45F2 >  8B4424 08       MOV     EAX, DWORD PTR SS:[ESP+8]  <--EAX=计算的值
733B45F6    53              PUSH    EBX
733B45F7    56              PUSH    ESI
733B45F8    57              PUSH    EDI
733B45F9    8D78 FF         LEA     EDI, DWORD PTR DS:[EAX-1]  <--上面的值-1
733B45FC    85FF            TEST    EDI, EDI
733B45FE    0F8C 10330200   JL      MSVBVM60.733D7914
733B4604    81FF FFFFFF7F   CMP     EDI, 7FFFFFFF
733B460A    0F8F 04330200   JG      MSVBVM60.733D7914
733B4610    8B4424 10       MOV     EAX, DWORD PTR SS:[ESP+10]

<--参数 UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

733B4614    8BDF            MOV     EBX, EDI
733B4616    85C0            TEST    EAX, EAX
733B4618    0F84 FD320200   JE      MSVBVM60.733D791B
733B461E    8B70 FC         MOV     ESI, DWORD PTR DS:[EAX-4]  <--ESI=82
733B4621    3BFE            CMP     EDI, ESI                   <--EDI<82        
733B4623    0F87 F9320200   JA      MSVBVM60.733D7922
733B4629    8B4C24 18       MOV     ECX, DWORD PTR SS:[ESP+18]
733B462D    66:8339 0A      CMP     WORD PTR DS:[ECX], 0A
733B4631    75 35           JNZ     SHORT MSVBVM60.733B4668
733B4633    8179 08 0400028>CMP     DWORD PTR DS:[ECX+8], 80020004
733B463A    75 2C           JNZ     SHORT MSVBVM60.733B4668
733B463C    83C8 FF         OR      EAX, FFFFFFFF
733B463F    66:85C0         TEST    AX, AX
733B4642    74 28           JE      SHORT MSVBVM60.733B466C
733B4644    2BF3            SUB     ESI, EBX
733B4646    8BC6            MOV     EAX, ESI
733B4648    50              PUSH    EAX
733B4649    8B4424 14       MOV     EAX, DWORD PTR SS:[ESP+14]
733B464D    03D8            ADD     EBX, EAX
733B464F    53              PUSH    EBX
733B4650    FF15 EC193973   CALL    DWORD PTR DS:[<&OLEAUT32.#150>]  
733B4656    8BF0            MOV     ESI, EAX
733B4658    85F6            TEST    ESI, ESI
733B465A    0F84 D0320200   JE      MSVBVM60.733D7930
733B4660    8BC6            MOV     EAX, ESI
733B4662    5F              POP     EDI
733B4663    5E              POP     ESI
733B4664    5B              POP     EBX
733B4665    C2 0C00         RETN    0C

733B4672    8BF8            MOV     EDI, EAX
733B4674    85FF            TEST    EDI, EDI
733B4676    0F8C AD320200   JL      MSVBVM60.733D7929
733B467C    81FF FFFFFF7F   CMP     EDI, 7FFFFFFF
733B4682    0F8F A1320200   JG      MSVBVM60.733D7929
733B4688    2BF3            SUB     ESI, EBX  <---ESI=ESI-EBX=82-7E(上面的值)=4
733B468A    8BC7            MOV     EAX, EDI
733B468C    3BFE            CMP     EDI, ESI
733B468E  ^ 77 B6           JA      SHORT MSVBVM60.733B4646

733B4648    50              PUSH    EAX
733B4649    8B4424 14       MOV     EAX, DWORD PTR SS:[ESP+14]  

<--参数 UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

733B464D    03D8            ADD     EBX, EAX    

<--取以EAX位基址,EBX位偏移的位数字符

733B464F    53              PUSH    EBX
733B4650    FF15 EC193973   CALL    DWORD PTR DS:[<&OLEAUT32.#150>]  
733B4656    8BF0            MOV     ESI, EAX
733B4658    85F6            TEST    ESI, ESI
733B465A    0F84 D0320200   JE      MSVBVM60.733D7930
733B4660    8BC6            MOV     EAX, ESI
733B4662    5F              POP     EDI
733B4663    5E              POP     ESI
733B4664    5B              POP     EBX
733B4665    C2 0C00         RETN    0C


RETN<---------------
|
00404992   .  8D95 3CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-C4]
00404998   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
0040499E   .  52            PUSH    EDX
0040499F   .  8D8D 6CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-94]
004049A5   .  50            PUSH    EAX
004049A6   .  51            PUSH    ECX
004049A7   .  FF15 EC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
004049AD   .  50            PUSH    EAX
004049AE   .  FF15 14104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
004049B4   .  8BD0          MOV     EDX, EAX                        

;  EDX<--EAX=00146F44,(UNICODE "Hs")<--上面计算出注册码的前二位

004049B6   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
004049B9   .  FFD3          CALL    EBX
004049BB   .  8D95 6CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-94]
004049C1   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
004049C7   .  52            PUSH    EDX
004049C8   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
004049CB   .  50            PUSH    EAX
004049CC   .  8D55 9C       LEA     EDX, DWORD PTR SS:[EBP-64]
004049CF   .  51            PUSH    ECX
004049D0   .  52            PUSH    EDX
004049D1   .  6A 04         PUSH    4
004049D3   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
004049D9   .  8B45 D8       MOV     EAX, DWORD PTR SS:[EBP-28]      

;  EAX=00146F44,(UNICODE "Hs")<--上面计算出注册码的前二位

004049DC   .  8BF7          MOV     ESI, EDI
004049DE   .  83C4 14       ADD     ESP, 14
004049E1   .  83C6 04       ADD     ESI, 4
004049E4   .  0F80 92030000 JO      Register.00404D7C
004049EA   .  81FE C9000000 CMP     ESI, 0C9
004049F0   .  8985 44FFFFFF MOV     DWORD PTR SS:[EBP-BC], EAX      
004049F6   .  C785 3CFFFFFF>MOV     DWORD PTR SS:[EBP-C4], 8
00404A00   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
00404A07   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
00404A0E   .  72 06         JB      SHORT Register.00404A16
00404A10   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>;
00404A16   >  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404A1C   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404A1F   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>;  

UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"<--参数

00404A29   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
00404A33   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404A39   .  8B55 CC       MOV     EDX, DWORD PTR SS:[EBP-34]
00404A3C   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404A3F   .  51            PUSH    ECX
00404A40   .  66:33C9       XOR     CX, CX
00404A43   .  8A0432        MOV     AL, BYTE PTR DS:[EDX+ESI]
00404A46   .  24 3F         AND     AL, 3F
00404A48   .  8AC8          MOV     CL, AL
00404A4A   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
00404A4D   .  66:83C1 01    ADD     CX, 1
00404A51   .  0F80 25030000 JO      Register.00404D7C
00404A57   .  0FBFD1        MOVSX   EDX, CX
00404A5A   .  52            PUSH    EDX
00404A5B   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
00404A61   .  50            PUSH    EAX
00404A62   .  51            PUSH    ECX
00404A63   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]

;  上面的函数计算了第三位

00404A69   .  8D95 3CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-C4]      
00404A6F   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
00404A75   .  52            PUSH    EDX
00404A76   .  8D8D 6CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-94]
00404A7C   .  50            PUSH    EAX
00404A7D   .  51            PUSH    ECX
00404A7E   .  FF15 EC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404A84   .  50            PUSH    EAX
00404A85   .  FF15 14104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
00404A8B   .  8BD0          MOV     EDX, EAX                        

; 上面的函数把得到的第三位加进存储注册码的内存中

00404A8D   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
00404A90   .  FFD3          CALL    EBX
00404A92   .  8D95 6CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-94]
00404A98   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
00404A9E   .  52            PUSH    EDX
00404A9F   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404AA2   .  50            PUSH    EAX
00404AA3   .  8D55 9C       LEA     EDX, DWORD PTR SS:[EBP-64]
00404AA6   .  51            PUSH    ECX
00404AA7   .  52            PUSH    EDX
00404AA8   .  6A 04         PUSH    4
00404AAA   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
00404AB0   .  8B45 D8       MOV     EAX, DWORD PTR SS:[EBP-28]      

;  EAX<--0013B14C,(UNICODE "HsL")

00404AB3   .  8BF7          MOV     ESI, EDI
00404AB5   .  83C4 14       ADD     ESP, 14
00404AB8   .  83C6 05       ADD     ESI, 5
00404ABB   .  0F80 BB020000 JO      Register.00404D7C
00404AC1   .  81FE C9000000 CMP     ESI, 0C9
00404AC7   .  8985 44FFFFFF MOV     DWORD PTR SS:[EBP-BC], EAX      

;  <--把得到的注册码放到00146F44内存中

00404ACD   .  C785 3CFFFFFF>MOV     DWORD PTR SS:[EBP-C4], 8
00404AD7   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
00404ADE   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
00404AE5   .  72 06         JB      SHORT Register.00404AED
00404AE7   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
00404AED   >  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404AF3   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404AF6   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>

;  UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404B00   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
00404B0A   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404B10   .  8B55 CC       MOV     EDX, DWORD PTR SS:[EBP-34]
00404B13   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404B16   .  51            PUSH    ECX
00404B17   .  66:33C9       XOR     CX, CX
00404B1A   .  8A0432        MOV     AL, BYTE PTR DS:[EDX+ESI]        

;  AL<--DS:[EDX+ESI]=DS:[001477A5]=FE   EDX=001477A0  ESI=5

00404B1D   .  C0E8 02       SHR     AL, 2
00404B20   .  8AC8          MOV     CL, AL
00404B22   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
00404B25   .  66:83C1 01    ADD     CX, 1
00404B29   .  0F80 4D020000 JO      Register.00404D7C
00404B2F   .  0FBFD1        MOVSX   EDX, CX
00404B32   .  52            PUSH    EDX
00404B33   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
00404B39   .  50            PUSH    EAX
00404B3A   .  51            PUSH    ECX
00404B3B   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]
00404B41   .  8D95 3CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-C4]
00404B47   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
00404B4D   .  52            PUSH    EDX
00404B4E   .  8D8D 6CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-94]
00404B54   .  50            PUSH    EAX
00404B55   .  51            PUSH    ECX
00404B56   .  FF15 EC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>;<--连接函数

F8--------->
|
77A10968 >  55              PUSH    EBP
77A10969    8BEC            MOV     EBP, ESP
77A1096B    53              PUSH    EBX
77A1096C    56              PUSH    ESI
77A1096D    8B75 08         MOV     ESI, DWORD PTR SS:[EBP+8]
77A10970    57              PUSH    EDI
77A10971    85F6            TEST    ESI, ESI
77A10973    75 04           JNZ     SHORT OLEAUT32.77A10979
77A10975    33DB            XOR     EBX, EBX
77A10977    EB 03           JMP     SHORT OLEAUT32.77A1097C
77A10979    8B5E FC         MOV     EBX, DWORD PTR DS:[ESI-4]
77A1097C    8B45 0C         MOV     EAX, DWORD PTR SS:[EBP+C]
77A1097F    85C0            TEST    EAX, EAX
77A10981    75 05           JNZ     SHORT OLEAUT32.77A10988
77A10983    2145 08         AND     DWORD PTR SS:[EBP+8], EAX
77A10986    EB 06           JMP     SHORT OLEAUT32.77A1098E
77A10988    8B40 FC         MOV     EAX, DWORD PTR DS:[EAX-4]
77A1098B    8945 08         MOV     DWORD PTR SS:[EBP+8], EAX
77A1098E    8B45 08         MOV     EAX, DWORD PTR SS:[EBP+8]
77A10991    03C3            ADD     EAX, EBX
77A10993    50              PUSH    EAX
77A10994    6A 00           PUSH    0
77A10996    E8 F589FAFF     CALL    OLEAUT32.SysAllocStringByteLen
77A1099B    8B4D 10         MOV     ECX, DWORD PTR SS:[EBP+10]
77A1099E    85C0            TEST    EAX, EAX
77A109A0    8901            MOV     DWORD PTR DS:[ECX], EAX
77A109A2    75 07           JNZ     SHORT OLEAUT32.77A109AB
77A109A4    B8 0E000780     MOV     EAX, 8007000E
77A109A9    EB 2B           JMP     SHORT OLEAUT32.77A109D6
77A109AB    8BCB            MOV     ECX, EBX
77A109AD    8BF8            MOV     EDI, EAX
77A109AF    8BD1            MOV     EDX, ECX
77A109B1    C1E9 02         SHR     ECX, 2
77A109B4    F3:A5           REP     MOVS DWORD PTR ES:[EDI], DWORD P>
77A109B6    8BCA            MOV     ECX, EDX
77A109B8    83E1 03         AND     ECX, 3
77A109BB    F3:A4           REP     MOVS BYTE PTR ES:[EDI], BYTE PTR>
77A109BD    8B4D 08         MOV     ECX, DWORD PTR SS:[EBP+8]
77A109C0    8B75 0C         MOV     ESI, DWORD PTR SS:[EBP+C]
77A109C3    8D3C18          LEA     EDI, DWORD PTR DS:[EAX+EBX]
77A109C6    8BC1            MOV     EAX, ECX                        
77A109C8    C1E9 02         SHR     ECX, 2
77A109CB    F3:A5           REP     MOVS DWORD PTR ES:[EDI], DWORD P>
77A109CD    8BC8            MOV     ECX, EAX
77A109CF    83E1 03         AND     ECX, 3
77A109D2    33C0            XOR     EAX, EAX
77A109D4    F3:A4           REP     MOVS BYTE PTR ES:[EDI], BYTE PTR>
77A109D6    5F              POP     EDI
77A109D7    5E              POP     ESI
77A109D8    5B              POP     EBX
77A109D9    5D              POP     EBP
77A109DA    C2 0C00         RETN    0C

//连接函数的具体操作

RETN<---------
|
00404B5C   .  50            PUSH    EAX                              
00404B5D   .  FF15 14104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
00404B63   .  8BD0          MOV     EDX, EAX
00404B65   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
00404B68   .  FFD3          CALL    EBX
00404B6A   .  8D95 6CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-94]
00404B70   .  8D85 7CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-84]
00404B76   .  52            PUSH    EDX
00404B77   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404B7A   .  50            PUSH    EAX
00404B7B   .  8D55 9C       LEA     EDX, DWORD PTR SS:[EBP-64]
00404B7E   .  51            PUSH    ECX
00404B7F   .  52            PUSH    EDX
00404B80   .  6A 04         PUSH    4
00404B82   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
00404B88   .  8B45 D8       MOV     EAX, DWORD PTR SS:[EBP-28]
00404B8B   .  8BF7          MOV     ESI, EDI
00404B8D   .  83C4 14       ADD     ESP, 14
00404B90   .  83C6 06       ADD     ESI, 6
00404B93   .  0F80 E3010000 JO      Register.00404D7C
00404B99   .  81FE C9000000 CMP     ESI, 0C9
00404B9F   .  8985 44FFFFFF MOV     DWORD PTR SS:[EBP-BC], EAX
00404BA5   .  C785 3CFFFFFF>MOV     DWORD PTR SS:[EBP-C4], 8
00404BAF   .  C745 94 01000>MOV     DWORD PTR SS:[EBP-6C], 1
00404BB6   .  C745 8C 02000>MOV     DWORD PTR SS:[EBP-74], 2
00404BBD   .  72 06         JB      SHORT Register.00404BC5
00404BBF   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
00404BC5   >  8BC7          MOV     EAX, EDI
00404BC7   .  83C0 07       ADD     EAX, 7
00404BCA   .  0F80 AC010000 JO      Register.00404D7C
00404BD0   .  3D C9000000   CMP     EAX, 0C9
00404BD5   .  8985 30FFFFFF MOV     DWORD PTR SS:[EBP-D0], EAX
00404BDB   .  72 06         JB      SHORT Register.00404BE3
00404BDD   .  FF15 6C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaGe>
00404BE3   >  8D95 5CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-A4]
00404BE9   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404BEC   .  C785 64FFFFFF>MOV     DWORD PTR SS:[EBP-9C], Register.>

;  UNICODE "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789oc4"

00404BF6   .  C785 5CFFFFFF>MOV     DWORD PTR SS:[EBP-A4], 8
00404C00   .  FF15 F4104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404C06   .  8B45 CC       MOV     EAX, DWORD PTR SS:[EBP-34]
00404C09   .  8D4D 8C       LEA     ECX, DWORD PTR SS:[EBP-74]
00404C0C   .  51            PUSH    ECX
00404C0D   .  66:33C9       XOR     CX, CX
00404C10   .  8A1430        MOV     DL, BYTE PTR DS:[EAX+ESI]
00404C13   .  80E2 03       AND     DL, 3
00404C16   .  8ACA          MOV     CL, DL
00404C18   .  8B95 30FFFFFF MOV     EDX, DWORD PTR SS:[EBP-D0]
00404C1E   .  66:6BC9 10    IMUL    CX, CX, 10
00404C22   .  8A0410        MOV     AL, BYTE PTR DS:[EAX+EDX]
00404C25   .  0F80 51010000 JO      Register.00404D7C
00404C2B   .  C0E8 04       SHR     AL, 4
00404C2E   .  66:33D2       XOR     DX, DX
00404C31   .  8AD0          MOV     DL, AL
00404C33   .  0BCA          OR      ECX, EDX
00404C35   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
00404C3B   .  66:83C1 01    ADD     CX, 1
00404C3F   .  0F80 37010000 JO      Register.00404D7C
00404C45   .  0FBFC1        MOVSX   EAX, CX
00404C48   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404C4B   .  50            PUSH    EAX
00404C4C   .  51            PUSH    ECX
00404C4D   .  52            PUSH    EDX
00404C4E   .  FF15 60104000 CALL    DWORD PTR DS:[<&MSVBVM60.#632>]  
00404C54   .  8D85 3CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-C4]
00404C5A   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
00404C60   .  50            PUSH    EAX
00404C61   .  8D95 6CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-94]
00404C67   .  51            PUSH    ECX
00404C68   .  52            PUSH    EDX
00404C69   .  FF15 EC104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaVa>
00404C6F   .  50            PUSH    EAX
00404C70   .  FF15 14104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
00404C76   .  8BD0          MOV     EDX, EAX
00404C78   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
00404C7B   .  FFD3          CALL    EBX
00404C7D   .  8D85 6CFFFFFF LEA     EAX, DWORD PTR SS:[EBP-94]
00404C83   .  8D8D 7CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-84]
00404C89   .  50            PUSH    EAX
00404C8A   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
00404C8D   .  51            PUSH    ECX
00404C8E   .  8D45 9C       LEA     EAX, DWORD PTR SS:[EBP-64]
00404C91   .  52            PUSH    EDX
00404C92   .  50            PUSH    EAX
00404C93   .  6A 04         PUSH    4
00404C95   .  FF15 18104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
00404C9B   .  83C4 14       ADD     ESP, 14
00404C9E   .  83FF 14       CMP     EDI, 14
00404CA1   .  74 16         JE      SHORT Register.00404CB9
00404CA3   .  8B4D D8       MOV     ECX, DWORD PTR SS:[EBP-28]
00404CA6   .  51            PUSH    ECX
00404CA7   .  68 8C2F4000   PUSH    Register.00402F8C
00404CAC   .  FF15 2C104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
00404CB2   .  8BD0          MOV     EDX, EAX
00404CB4   .  8D4D D8       LEA     ECX, DWORD PTR SS:[EBP-28]
00404CB7   .  FFD3          CALL    EBX
00404CB9   >  B8 05000000   MOV     EAX, 5                      <---每次循环取5位字符
00404CBE   .  03C7          ADD     EAX, EDI
00404CC0   .  0F80 B6000000 JO      Register.00404D7C
00404CC6   .  8BF8          MOV     EDI, EAX
00404CC8   .^ E9 DCFAFFFF   JMP     Register.004047A9           <---循环计算取字符
00404CCD   >  8B55 B0       MOV     EDX, DWORD PTR SS:[EBP-50]
00404CD0   .  52            PUSH    EDX
00404CD1   .  E8 5AE1FFFF   CALL    Register.00402E30
00404CD6   .  8B35 30104000 MOV     ESI, DWORD PTR DS:[<&MSVBVM60.__>
00404CDC   .  FFD6          CALL    ESI                              
00404CDE   .  8B45 E8       MOV     EAX, DWORD PTR SS:[EBP-18]
00404CE1   .  50            PUSH    EAX
00404CE2   .  E8 91E1FFFF   CALL    Register.00402E78
00404CE7   .  FFD6          CALL    ESI
00404CE9   .  8B55 D8       MOV     EDX, DWORD PTR SS:[EBP-28]      

; EDX<--00145CA4  UNICODE "HsLcA-GtvGa-pwPwm-HlrId-xh1P"<--正确的注册码

00404CEC   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
00404CEF   .  FF15 D0104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaSt>
00404CF5   >  68 5F4D4000   PUSH    Register.00404D5F
00404CFA   .  EB 3A         JMP     SHORT Register.00404D36
00404CFC   .  F645 FC 04    TEST    BYTE PTR SS:[EBP-4], 4
00404D00   .  74 09         JE      SHORT Register.00404D0B
00404D02   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
00404D05   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
00404D0B   >  8D4D AC       LEA     ECX, DWORD PTR SS:[EBP-54]
00404D0E   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFr>
00404D14   .  8D8D 6CFFFFFF LEA     ECX, DWORD PTR SS:[EBP-94]
00404D1A   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
00404D20   .  51            PUSH    ECX
00404D21   .  8D45 8C       LEA     EAX, DWORD PTR SS:[EBP-74]
00404D24   .  52            PUSH    EDX
00404D25   .  8D4D 9C       LEA     ECX, DWORD PTR SS:[EBP-64]
00404D28   .  50            PUSH    EAX
00404D29   .  51            PUSH    ECX
00404D2A   .  6A 04         PUSH    4

RETN<---------
|
00405557   .  8B55 E0       MOV     EDX, DWORD PTR SS:[EBP-20]          

;  EDX<--SS:[12F648]=00145CA4,(UNICODE "HsLcA-GtvGa-pwPwm-HlrId-xh1P3"<--CODE

0040555A   .  8D4D E8       LEA     ECX, DWORD PTR SS:[EBP-18]
0040555D   .  C745 E0 00000>MOV     DWORD PTR SS:[EBP-20], 0
00405564   .  FF15 14114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaStrMov>
0040556A   .  8D4D E4       LEA     ECX, DWORD PTR SS:[EBP-1C]
0040556D   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeSt>
00405573   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
00405576   .  FF15 28114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeOb>
0040557C   .  8B0E          MOV     ECX, DWORD PTR DS:[ESI]
0040557E   .  56            PUSH    ESI
0040557F   .  FF91 00030000 CALL    DWORD PTR DS:[ECX+300]
00405585   .  8D55 DC       LEA     EDX, DWORD PTR SS:[EBP-24]
00405588   .  50            PUSH    EAX
00405589   .  52            PUSH    EDX
0040558A   .  FFD3          CALL    EBX
0040558C   .  8BF8          MOV     EDI, EAX
0040558E   .  8D4D E4       LEA     ECX, DWORD PTR SS:[EBP-1C]
00405591   .  51            PUSH    ECX
00405592   .  57            PUSH    EDI
00405593   .  8B07          MOV     EAX, DWORD PTR DS:[EDI]
00405595   .  FF90 A0000000 CALL    DWORD PTR DS:[EAX+A0]
0040559B   .  85C0          TEST    EAX, EAX
0040559D   .  DBE2          FCLEX
0040559F   .  7D 12         JGE     SHORT Register.004055B3
004055A1   .  68 A0000000   PUSH    0A0
004055A6   .  68 AC2F4000   PUSH    Register.00402FAC
004055AB   .  57            PUSH    EDI
004055AC   .  50            PUSH    EAX
004055AD   .  FF15 34104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaHresul>
004055B3   >  8B55 E4       MOV     EDX, DWORD PTR SS:[EBP-1C]          

;  EDX<--00147114,(UNICODE "78945-61230-01234-56789-14725")<--试验码

004055B6   .  8B45 E8       MOV     EAX, DWORD PTR SS:[EBP-18]          

;  EDX<--00145CA4,(UNICODE "HsLcA-GtvGa-pwPwm-HlrId-xh1P3"<--CODE
004055B9   .  52            PUSH    EDX
004055BA   .  50            PUSH    EAX
004055BB   .  6A 00         PUSH    0
004055BD   .  FF15 F8104000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaStrCom>

<--比较的函数

004055C3   .  66:8BF8       MOV     DI, AX
004055C6   .  8D4D E4       LEA     ECX, DWORD PTR SS:[EBP-1C]
004055C9   .  66:F7DF       NEG     DI
004055CC   .  1BFF          SBB     EDI, EDI
004055CE   .  47            INC     EDI
004055CF   .  F7DF          NEG     EDI
004055D1   .  FF15 24114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeSt>
004055D7   .  8D4D DC       LEA     ECX, DWORD PTR SS:[EBP-24]
004055DA   .  FF15 28114000 CALL    DWORD PTR DS:[<&MSVBVM60.__vbaFreeOb>
004055E0   .  B9 04000280   MOV     ECX, 80020004
004055E5   .  B8 0A000000   MOV     EAX, 0A
004055EA   .  66:85FF       TEST    DI, DI                    ;  关键的比较
004055ED   .  894D A4       MOV     DWORD PTR SS:[EBP-5C], ECX
004055F0   .  8945 9C       MOV     DWORD PTR SS:[EBP-64], EAX
004055F3   .  894D B4       MOV     DWORD PTR SS:[EBP-4C], ECX
004055F6   .  8945 AC       MOV     DWORD PTR SS:[EBP-54], EAX
004055F9      0F84 21010000 JE      Register.00405720         ;  关键的跳转
004055FF   .  8B1D F4104000 MOV     EBX, DWORD PTR DS:[<&MSVBVM60.__vbaV>
00405605   .  BF 08000000   MOV     EDI, 8
0040560A   .  8D95 7CFFFFFF LEA     EDX, DWORD PTR SS:[EBP-84]
00405610   .  8D4D BC       LEA     ECX, DWORD PTR SS:[EBP-44]
00405613   .  C745 84 48304>MOV     DWORD PTR SS:[EBP-7C], Register.0040>
0040561A   .  89BD 7CFFFFFF MOV     DWORD PTR SS:[EBP-84], EDI
00405620   .  FFD3          CALL    EBX                                  
00405622   .  8D55 8C       LEA     EDX, DWORD PTR SS:[EBP-74]
00405625   .  8D4D CC       LEA     ECX, DWORD PTR SS:[EBP-34]
00405628   .  C745 94 14304>MOV     DWORD PTR SS:[EBP-6C], Register.0040>
0040562F   .  897D 8C       MOV     DWORD PTR SS:[EBP-74], EDI
00405632   .  FFD3          CALL    EBX

====================================================

以上演示只是个人观点,可能有错误.请大家谅解.


                                                   by  fxyang[OCN]

                                                      2003.4.14