VB函数分析
来源:互联网 发布:怎样做淘宝店铺装修 编辑:程序博客网 时间:2024/06/06 18:21
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
----------------------------------------------------
- VB函数分析
- VB函数分析
- VB函数分析
- VB函数分析
- VB函数
- win32 函数 VB 函数
- VB程序架构分析
- 用正则分析一段vb代码含有哪些过程或者函数
- VB API函数大全
- VB API函数大全
- VB asp函数大全
- vb: format函数问题
- VB函数集合
- VB函数大全
- vb.net常用函数
- vb.net常用函数
- VB MD5 算法函数
- vb冒泡排序函数
- 第十二课 日期处理
- XML的接口标准DOM与SAX的区别
- 变参数printf解析
- OpenGL学习3
- OpenGL学习1
- VB函数分析
- 【Unix/Linux】【系统】文件 —— 类型,属性,扩展名
- javascript中的内置对象
- 时间,空间和效率
- Present Perfect
- 聊聊Portal 说说门户 (一)
- jdbc封装工具类
- JNDI使用小指南
- 第十三课 异常