飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4636|回复: 2

[讨论] 最近弄一个软件,VB的,求助VB函数的解释

[复制链接]

该用户从未签到

发表于 2009-3-17 12:50:57 | 显示全部楼层 |阅读模式
最近弄一个软件,VB的,明码比较

求助里面的  msvbvm60.__vbaVarIndexLoadRef 和 msvbvm60.__vbaVarIndexLoad  两个函数的解释。


软件先把 一个固定字符串和机器码及固定字符串连接,然后算出32位MD5值。再通过运算得出一个32位的数字。取数字前8位为注册码。
如MD5值:158bf6da6e6abf470656486d398bcf2f 算出为 24511602536023448531953420525694。


我已经弄出了内存注册机,现在学着分析算法,分析了一部分,被难住了,在下初学,请各位指点:

EDX中为MD5值,压入堆栈后调用 00430540,下面是我截取的关键部分。

00422E93   .  E8 A8D60000   call 软件.00430540   ;得出注册码的最后算法,注册码返回在EAX中

00431DC7   .  BE 01000000   mov esi,1                                ;  SI作为计数器,从1到32
00431DCC   >  66:3BB5 9CF8F>cmp si,word ptr ss:[ebp-764]             ;  比较 SI 是否为32
00431DD3   .  0F8F E7010000 jg 软件.00431FC0                     ;  比较 SI 是否为32,是就跳
00431DD9   .  0FBFC6        movsx eax,si                             ;  当前计数送 EAX
00431DDC   .  8D55 B0       lea edx,dword ptr ss:[ebp-50]
00431DDF   .  8D4D A0       lea ecx,dword ptr ss:[ebp-60]
00431DE2   .  52            push edx                                 ; /Length8     为0
00431DE3   .  50            push eax                                 ; |Start       为SI的数值
00431DE4   .  8D85 D4FEFFFF lea eax,dword ptr ss:[ebp-12C]           ; |            值:00004002  是什么意思?
00431DEA   .  C745 B8 01000>mov dword ptr ss:[ebp-48],1              ; |
00431DF1   .  50            push eax                                 ; |dString8
00431DF2   .  51            push ecx                                 ; |RetBUFFER    值:0
00431DF3   .  895D B0       mov dword ptr ss:[ebp-50],ebx            ; |
00431DF6   .  89BD DCFEFFFF mov dword ptr ss:[ebp-124],edi           ; |
00431DFC   .  C785 D4FEFFFF>mov dword ptr ss:[ebp-12C],4008          ; |
00431E06   .  FF15 E8104000 call dword ptr ds:[<&MSVBVM60.#632>]     ; \rtcMidCharVar
00431E0C   .  8D55 A0       lea edx,dword ptr ss:[ebp-60]
00431E0F   .  52            push edx
00431E10   .  FF15 28104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVa>;  msvbvm60.__vbaStrVarMove
00431E16   .  8BD0          mov edx,eax
00431E18   .  8D4D C0       lea ecx,dword ptr ss:[ebp-40]
00431E1B   .  FF15 70124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  msvbvm60.__vbaStrMove
00431E21   .  8D45 C0       lea eax,dword ptr ss:[ebp-40]
00431E24   .  50            push eax                                                  得到ASCLL码,在EAX中内存地址中
00431E25   .  E8 C6020000   call 软件.004320F0
00431E2A   .  8D4D C0       lea ecx,dword ptr ss:[ebp-40]
00431E2D   .  8945 E0       mov dword ptr ss:[ebp-20],eax
00431E30   .  FF15 AC124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  msvbvm60.__vbaFreeStr
00431E36   .  8D4D A0       lea ecx,dword ptr ss:[ebp-60]
00431E39   .  8D55 B0       lea edx,dword ptr ss:[ebp-50]
00431E3C   .  51            push ecx
00431E3D   .  52            push edx
00431E3E   .  53            push ebx
00431E3F   .  FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
00431E45   .  8B0F          mov ecx,dword ptr ds:[edi]
00431E47   .  83C4 0C       add esp,0C
00431E4A   .  8D45 B0       lea eax,dword ptr ss:[ebp-50]
00431E4D   .  C745 B8 01000>mov dword ptr ss:[ebp-48],1
00431E54   .  50            push eax                                 ; /Length8
00431E55   .  51            push ecx                                 ; |/String
00431E56   .  895D B0       mov dword ptr ss:[ebp-50],ebx            ; ||
00431E59   .  89BD DCFEFFFF mov dword ptr ss:[ebp-124],edi           ; ||
00431E5F   .  C785 D4FEFFFF>mov dword ptr ss:[ebp-12C],4008          ; ||
00431E69   .  FF15 2C104000 call dword ptr ds:[<&MSVBVM60.__vbaLenBs>; |\__vbaLenBstr
00431E6F   .  8BD0          mov edx,eax                              ; |
00431E71   .  8D4D A0       lea ecx,dword ptr ss:[ebp-60]            ; |
00431E74   .  0FBFC6        movsx eax,si                             ; |
00431E77   .  2BD0          sub edx,eax                              ; |
00431E79   .  8D85 D4FEFFFF lea eax,dword ptr ss:[ebp-12C]           ; |
00431E7F   .  0F80 5C020000 jo 软件.004320E1                         ; |
00431E85   .  83C2 01       add edx,1                                ; |
00431E88   .  0F80 53020000 jo 软件.004320E1                         ; |
00431E8E   .  52            push edx                                 ; |Start
00431E8F   .  50            push eax                                 ; |dString8
00431E90   .  51            push ecx                                 ; |RetBUFFER
00431E91   .  FF15 E8104000 call dword ptr ds:[<&MSVBVM60.#632>]     ; \rtcMidCharVar
00431E97   .  8D55 A0       lea edx,dword ptr ss:[ebp-60]
00431E9A   .  52            push edx
00431E9B   .  FF15 28104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVa>;  msvbvm60.__vbaStrVarMove
00431EA1   .  8BD0          mov edx,eax
00431EA3   .  8D4D C0       lea ecx,dword ptr ss:[ebp-40]
00431EA6   .  FF15 70124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  msvbvm60.__vbaStrMove
00431EAC   .  8D45 C0       lea eax,dword ptr ss:[ebp-40]
00431EAF   .  50            push eax
00431EB0   .  E8 3B020000   call 软件.004320F0
00431EB5   .  8D4D C0       lea ecx,dword ptr ss:[ebp-40]
00431EB8   .  8945 E4       mov dword ptr ss:[ebp-1C],eax
00431EBB   .  FF15 AC124000 call dword ptr ds:[<&MSVBVM60.__vbaFreeS>;  msvbvm60.__vbaFreeStr
00431EC1   .  8D4D A0       lea ecx,dword ptr ss:[ebp-60]
00431EC4   .  8D55 B0       lea edx,dword ptr ss:[ebp-50]
00431EC7   .  51            push ecx
00431EC8   .  52            push edx
00431EC9   .  53            push ebx
00431ECA   .  FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
00431ED0   .  8B45 D4       mov eax,dword ptr ss:[ebp-2C]
00431ED3   .  B9 02400000   mov ecx,4002
00431ED8   .  8985 BCFEFFFF mov dword ptr ss:[ebp-144],eax
00431EDE   .  8D45 E4       lea eax,dword ptr ss:[ebp-1C]
00431EE1   .  8D55 E0       lea edx,dword ptr ss:[ebp-20]
00431EE4   .  83C4 0C       add esp,0C
00431EE7   .  C785 B4FEFFFF>mov dword ptr ss:[ebp-14C],8
00431EF1   .  8985 CCFEFFFF mov dword ptr ss:[ebp-134],eax
00431EF7   .  898D C4FEFFFF mov dword ptr ss:[ebp-13C],ecx
00431EFD   .  8995 DCFEFFFF mov dword ptr ss:[ebp-124],edx
00431F03   .  8D95 B4FEFFFF lea edx,dword ptr ss:[ebp-14C]
00431F09   .  898D D4FEFFFF mov dword ptr ss:[ebp-12C],ecx
00431F0F   .  52            push edx
00431F10   .  83EC 10       sub esp,10
00431F13   .  8BD4          mov edx,esp
00431F15   .  6A 01         push 1
00431F17   .  890A          mov dword ptr ds:[edx],ecx
00431F19   .  8B8D C8FEFFFF mov ecx,dword ptr ss:[ebp-138]
00431F1F   .  83EC 10       sub esp,10
00431F22   .  894A 04       mov dword ptr ds:[edx+4],ecx
00431F25   .  8BCC          mov ecx,esp
00431F27   .  6A 01         push 1
00431F29   .  8942 08       mov dword ptr ds:[edx+8],eax
00431F2C   .  8B85 D0FEFFFF mov eax,dword ptr ss:[ebp-130]
00431F32   .  8942 0C       mov dword ptr ds:[edx+C],eax
00431F35   .  8B95 D4FEFFFF mov edx,dword ptr ss:[ebp-12C]
00431F3B   .  8B85 D8FEFFFF mov eax,dword ptr ss:[ebp-128]
00431F41   .  8911          mov dword ptr ds:[ecx],edx
00431F43   .  8B95 DCFEFFFF mov edx,dword ptr ss:[ebp-124]
00431F49   .  8941 04       mov dword ptr ds:[ecx+4],eax
00431F4C   .  8B85 E0FEFFFF mov eax,dword ptr ss:[ebp-120]
00431F52   .  8951 08       mov dword ptr ds:[ecx+8],edx
00431F55   .  8D55 B0       lea edx,dword ptr ss:[ebp-50]
00431F58   .  8941 0C       mov dword ptr ds:[ecx+C],eax
00431F5B   .  8D4D C4       lea ecx,dword ptr ss:[ebp-3C]
00431F5E   .  51            push ecx
00431F5F   .  52            push edx
00431F60   .  FF15 4C104000 call dword ptr ds:[<&MSVBVM60.__vbaVarIn>;  msvbvm60.__vbaVarIndexLoadRef
00431F66   .  83C4 1C       add esp,1C
00431F69   .  50            push eax
00431F6A   .  8D45 A0       lea eax,dword ptr ss:[ebp-60]
00431F6D   .  50            push eax
00431F6E   .  FF15 B0104000 call dword ptr ds:[<&MSVBVM60.__vbaVarIn>;  msvbvm60.__vbaVarIndexLoad
00431F74   .  83C4 1C       add esp,1C
00431F77   .  8D4D 90       lea ecx,dword ptr ss:[ebp-70]
00431F7A   .  50            push eax
00431F7B   .  51            push ecx
00431F7C   .  FF15 BC114000 call dword ptr ds:[<&MSVBVM60.__vbaVarCa>;  msvbvm60.__vbaVarCat
00431F82   .  50            push eax
00431F83   .  FF15 28104000 call dword ptr ds:[<&MSVBVM60.__vbaStrVa>;  msvbvm60.__vbaStrVarMove
00431F89   .  8BD0          mov edx,eax
00431F8B   .  8D4D D4       lea ecx,dword ptr ss:[ebp-2C]
00431F8E   .  FF15 70124000 call dword ptr ds:[<&MSVBVM60.__vbaStrMo>;  msvbvm60.__vbaStrMove
00431F94   .  8D55 90       lea edx,dword ptr ss:[ebp-70]
00431F97   .  8D45 A0       lea eax,dword ptr ss:[ebp-60]
00431F9A   .  52            push edx
00431F9B   .  8D4D B0       lea ecx,dword ptr ss:[ebp-50]
00431F9E   .  50            push eax
00431F9F   .  51            push ecx
00431FA0   .  6A 03         push 3
00431FA2   .  FF15 34104000 call dword ptr ds:[<&MSVBVM60.__vbaFreeV>;  msvbvm60.__vbaFreeVarList
00431FA8   .  B8 01000000   mov eax,1
00431FAD   .  83C4 10       add esp,10
00431FB0   .  66:03C6       add ax,si
00431FB3   .  0F80 28010000 jo 软件.004320E1
00431FB9   .  8BF0          mov esi,eax
00431FBB   .^ E9 0CFEFFFF   jmp 软件.00431DCC
00431FC0   >  8B55 D4       mov edx,dword ptr ss:[ebp-2C]            ;  得出注册码
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-3-20 07:39:15 | 显示全部楼层
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-4-3 15:03:19 | 显示全部楼层
    太好了,我是学VB出身的/:06
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表