加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB函数分析

发布时间:2020-12-17 00:29:50 所属栏目:大数据 来源:网络整理
导读:VB函数约定太杂乱没有统一性,自己分析了几个函数:有的用eax,edx约定,有的单个ecx约定,有的堆栈、寄存器一起用,有的象stdcall约定,有时候会跟虚拟机内部组件传地址引用. 先给出函数分析,下边分析汇编的时候,可以看这些函数,不是很全的且存在错误.仅仅供参考.

VB函数约定太杂乱没有统一性,自己分析了几个函数:有的用eax,edx约定,有的单个ecx约定,有的堆栈、寄存器一起用,有的象stdcall约定,有时候会跟虚拟机内部组件传地址引用. 先给出函数分析,下边分析汇编的时候,可以看这些函数,不是很全的且存在错误.仅仅供参考.大家可以一起补充. ----------------------------------------------------------------- MSVBVM60.__vbaObjSet类似MSVBVM60.__vbanew2用来给对象赋值或者实例化 类似stdcall push eax----->类对象模版地址 lea eax,[ebp-1C] push eax-------->欲要设置引用对象指针给eax call 401048 ---> MSVBVM60.__vbaObjSet -------------------------------------------------- 在每个事件触发之前都要调用MSVBVM60.Zombie_AddRef来记数 事件引用的COM组件对象.约定eax,ecx mov eax,esi and eax,1 mov [ebp-4],eax and esi,FFFFFFFE------>经过这寻址正好是对象虚拟表指针 push esi------>保存对象虚表指针esi mov [ebp+8],esi---->esi被局部变量保存[ebp+8] mov ecx,[esi]----->对象虚拟表地址给ecx call [ecx+4] ---------> MSVBVM60.Zombie_AddRef -------------------------------------------------- 在每个事件结束之后都后调用MSVBVM60.Zombie_Release来 释放事件引用的COM组件对象,约定eax. MSVBVM60.Zombie_Release释放对象约定参数寄存器:eax mov eax,[ebp+8] push eax-----------对象地址eax mov edx,[eax]----->对象虚拟表地址给edx call [edx+8] -----> MSVBVM60.Zombie_Release ------------------------------------------------------------------- MSVBVM60.__vbaFreeObj释放对象约定寄存器:ecx lea ecx,[ebp-24]--->对象引用指针ecx call [401140] --->MSVBVM60.__vbaFreeObj -------------------------------------------------- MSVBVM60.__vbaChkstk调整堆栈指针约定寄存器:eax mov eax,10 call 004016C0---->MSVBVM60.__vbaChkstk--->这个函数返回的时候就是把esp+10 --------------------------------------------------- MSVBVM60.__vbaNew2类似C++/JAVA的new函数 push 0043E120--->对象地址 push 004031A4---------->类模版地址 call 4010E0 ---> MSVBVM60.__vbaNew2 ---------------------------------------------------- MSVBVM60.__vbaStrMove 是寄存器约定 edx和ecx. mov edx,eax---->UNICODE字符串源地址:edx lea ecx,[ebp-24]---->UNICODE字符串目的地址:ecx call 401120 ----> MSVBVM60.__vbaStrMove ----------------------------------------------------- MSVBVM60.__vbaStrCat 是stdcall约定 push edx----->连接目的UNICODE字符串 push 00404230 ---->UNICODE字符串常量 call 401034 ---->MSVBVM60.__vbaStrCat ----------------------------------------------------- MSVBVM60.__vbaFreeStr 约定寄存器:ecx lea ecx,[ebp-24]--->ecx传字符串引用 call 40113C----> MSVBVM60.__vbaFreeStr ----------------------------------------------------- MSVBVM60.__vbaFreeStrList是可变参数Cdcall约定 lea eax,[ebp-28]--->UNICODE字符串引用地址eax push eax lea ecx,[ebp-24]---->UNICODE字符串引用地址ecx push ecx push 2------->释放2个UNICODE字符串 call 4010F0 ---> MSVBVM60.__vbaFreeStrList add esp,0C ----------------------------------------------------- MSVBVM60.__vbaFileOpen是Cdcall约定 push eax---->UNICODE文件字符串名称 push 1 push -1 push 1 call 4010F0-----> MSVBVM60.__vbaFileOpen add esp,0C ----------------------------------------------------

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读