欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

我这样分析! (3千字)

我这样分析! (3千字)

这是一个vb6 native编译程序。用wdasm反汇编结合vbde辅助定位,知道:
自:00410390开始的代码为“添加”按钮_Click事件。
...
:004103D5 33DB                    xor ebx, ebx              //ebx==0
...
...
:00410411 899DF0FEFFFF            mov dword ptr [ebp-110], ebx
// 在现代编译器生成的代码中,dword ptr [ebp-110]指的是一局部变量。
// 后文可以知道其实际指的就是list1.listcount
// 此处是使此变量清零。
:00410417 FF92DC030000            call dword ptr [edx+000003DC]
:0041041D 50                      push eax
:0041041E 8D45D8                  lea eax, dword ptr [ebp-28]
:00410421 50                      push eax
* Reference To: MSVBVM60.__vbaObjSet, Ord:0000h
                                  |
:00410422 FF156C104000            Call dword ptr [0040106C]
:00410428 8BF0                    mov esi, eax
:0041042A 8D95F0FEFFFF            lea edx, dword ptr [ebp-110]
:00410430 52                      push edx       
// push List1.listcount
:00410431 56                      push esi       
:00410432 8B0E                    mov ecx, dword ptr [esi]
:00410434 FF91D8000000            call dword ptr [ecx+000000D8]
// call get list1.listcount
:0041043A 3BC3                    cmp eax, ebx
:0041043C DBE2                    fclex
:0041043E 7D12                    jge 00410452
:00410440 68D8000000              push 000000D8
* Possible StringData Ref from Code Obj ->"O?檉??"
                                  |
:00410445 68C47E4000              push 00407EC4
// 指向UUID{33AD4F11-6699-11CF-B70C-00AA0060D393},即listbox1
:0041044A 56                      push esi
:0041044B 50                      push eax
* Reference To: MSVBVM60.__vbaHresultCheckObj, Ord:0000h
                                  |
:0041044C FF1554104000            Call dword ptr [00401054]
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0041043E(C)
|
:00410452 33C0                    xor eax, eax
:00410454 6683BDF0FEFFFF09        cmp word ptr [ebp-110], 0009
// cmp list1.listcount, 09
:0041045C 8D4DD8                  lea ecx, dword ptr [ebp-28]
:0041045F 0F9EC0                  setle al
// Is less ?
:00410462 F7D8                    neg eax
:00410464 668BF0                  mov si, ax
// 结果传递给si,比较
* Reference To: MSVBVM60.__vbaFreeObj, Ord:0000h
                                  |
:00410467 FF1594114000            Call dword ptr [00401194]
:0041046D 663BF3                  cmp si, bx
:00410470 0F8412050000            je 00410988
  所以,我喜欢改:0041042A 8D95F0FEFFFF  lea edx, dword ptr [ebp-110]
              为:0041042A 8D95F2FEFFFF  lea edx, dword ptr [ebp-10E]
...
...
同样,还有一处同样对比,也是同样改法。
:00410563 8D8DF0FEFFFF            lea ecx, dword ptr [ebp+FFFFFEF0]
:00410569 51                      push ecx
:0041056A 50                      push eax
:0041056B 8985ECFEFFFF            mov dword ptr [ebp+FFFFFEEC], eax
:00410571 FF92D8000000            call dword ptr [edx+000000D8]
...
:004105AE 6683BDF0FEFFFF09        cmp word ptr [ebp+FFFFFEF0], 0009
:004105B6 0F9EC1                  setle cl
:004105B9 F7D9                    neg ecx

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功