关于 msvbvm60.__vbaVarVargNofree 的一些理解
来源:互联网 发布:阿里数据研究中心 编辑:程序博客网 时间:2024/05/16 15:19
完全是猜测!
函数名:__vbaVarVargNofree
函数功能:从一个Variant变量中提取指针
输入变量:ecx(指定的esi值), edx(Variant变量)
输出变量:eax(指针)
参考示例:
005F969B 51 push ecx
005F969C 52 push edx
005F969D 8BD7 mov edx, edi
005F969F 8D4D A8 lea ecx, dword ptr ss:[ebp-58]
005F96A2 C745 98 0480000>mov dword ptr ss:[ebp-68], 8004
005F96A9 8945 C0 mov dword ptr ss:[ebp-40], eax
005F96AC 895D C4 mov dword ptr ss:[ebp-3C], ebx
005F96AF C745 B8 0500000>mov dword ptr ss:[ebp-48], 5
005F96B6 E8 26F4B065 call msvbvm60.__vbaVarVargNofree
函数体:
66108AE1 >/$ 56 push esi ; __vbaVarVargNofree
66108AE2 |. 8BC2 mov eax, edx
66108AE4 |. 8BF1 mov esi, ecx
66108AE6 |. 66:8B08 mov cx, word ptr ds:[eax]
66108AE9 |. F6C5 40 test ch, 40 ; 判断是否为指针类型
66108AEC |. 74 15 je short msvbvm60.66108B03 ; 不是就跳转
66108AEE |. 66:81F9 0C40 cmp cx, 400C ; 判断是否为Variant指针
66108AF3 |. 75 05 jnz short msvbvm60.66108AFA ; 是就跳转
66108AF5 |. 8B40 08 mov eax, dword ptr ds:[eax+8] ; 普通指针,直接取出
66108AF8 |. 5E pop esi
66108AF9 |. C3 retn
66108AFA |> 50 push eax ; 是Variant指针
66108AFB |. 56 push esi
66108AFC |. E8 DD76FFFF call msvbvm60.661001DE ; 关键call,挺复杂的
66108B01 |. 8BC6 mov eax, esi
66108B03 |> 5E pop esi ; 不是指针,直接返回
66108B04 \. C3 retn
- 关于 msvbvm60.__vbaVarVargNofree 的一些理解
- 关于JAXB的一些理解
- 关于bitmap的一些理解
- 关于Hook的一些理解
- 关于JavaBean的一些理解
- 关于异常的一些理解
- 关于内存的一些理解
- 关于内存的一些理解
- 关于MFC的一些理解
- 关于编码的一些理解
- 关于枚举的一些理解
- 关于const的一些理解
- 关于矩阵的一些理解
- 关于编码的一些理解
- 关于产品的一些理解
- 关于protobuff的一些理解
- 关于mutex的一些理解
- 关于servlet的一些理解
- exp/imp与expdp/impdp对比及使用优化
- 基本IO函数的使用(open,write,read)
- node.js 基本资料 和简单实例
- 修改sqlserver 2008 express为混合认证模式
- QT多线程
- 关于 msvbvm60.__vbaVarVargNofree 的一些理解
- 最小生成树Prim模板
- 01--JDK学习随记
- Android 模拟器与SDCard
- gedit Gtk-WARNING
- 02--标识、关键字、类型随记
- thrift0.8.0支持win7的方法
- 利用HDD regenator2011修复损坏的硬盘
- 03--面向对象基础部分随记