VB函数分析

VB函数分析,第1张

概述今天破解软件过程中,遇到一些不懂的函数,百度查找到了,在此做一下记录 VB函数约定太杂乱没有统一性,自己分析了几个函数:有的用eax,edx约定,有的单个ecx约定,有的堆栈、寄存器一起用,有的象stdcall约定,有时候会跟虚拟机内部组件传地址引用. 先给出函数分析,下边分析汇编的时候,可以看这些函数,不是很全的且存在错误.仅仅供参考.大家可以一起补充. --------------------

今天破解软件过程中,遇到一些不懂的函数,百度查找到了,在此做一下记录


VB函数约定太杂乱没有统一性,自己分析了几个函数:有的用eax,edx约定,有的单个ecx约定,有的堆栈、寄存器一起用,有的象stdcall约定,有时候会跟虚拟机内部组件传地址引用.
先给出函数分析,下边分析汇编的时候,可以看这些函数,不是很全的且存在错误.仅仅供参考.大家可以一起补充.
-----------------------------------------------------------------
MSVBVM60.__vbaObJset类似MSVBVM60.__vbanew2用来给对象赋值或者实例化
类似stdcall

push     eax----->类对象模版地址lea      eax,[ebp-1C]push     eax-------->欲要设置引用对象指针给eaxcall     401048 ---> MSVBVM60.__vbaObJset
--------------------------------------------------
在每个事件触发之前都要调用MSVBVM60.ZombIE_AddRef来记数
事件引用的COM组件对象.约定eax,ecx
mov      eax,esiand      eax,1mov      [ebp-4],eaxand      esi,FFFFFFFE------>经过这寻址正好是对象虚拟表指针push     esi------>保存对象虚表指针esimov      [ebp+8],esi---->esi被局部变量保存[ebp+8]mov      ecx,[esi]----->对象虚拟表地址给ecxcall     [ecx+4] ---------> MSVBVM60.ZombIE_AddRef
在每个事件结束之后都后调用MSVBVM60.ZombIE_Release来
释放事件引用的COM组件对象,约定eax.
MSVBVM60.ZombIE_Release释放对象约定参数寄存器:eaxmov      eax,[ebp+8]push     eax-----------对象地址eaxmov      edx,[eax]----->对象虚拟表地址给edxcall     [edx+8] ----->   MSVBVM60.ZombIE_Release
-------------------------------------------------------------------

MSVBVM60.__vbaFreeObj释放对象约定寄存器:ecx
lea      ecx,[ebp-24]--->对象引用指针ecxcall      [401140] --->MSVBVM60.__vbaFreeObj
MSVBVM60.__vbaChkstk调整堆栈指针约定寄存器:eax
mov      eax,10call     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字符串源地址:edxlea      ecx,[ebp-24]---->UNICODE字符串目的地址:ecxcall     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字符串引用地址eaxpush     eaxlea      ecx,[ebp-24]---->UNICODE字符串引用地址ecxpush     ecxpush     2------->释放2个UNICODE字符串call    4010F0 ---> MSVBVM60.__vbaFreeStrListadd     esp,0C 

MSVBVM60.__vbafileOpen是Cdcall约定
push     eax---->UNICODE文件字符串名称push     1push     -1push     1call     4010F0-----> MSVBVM60.__vbafileOpenadd      esp,0C


---------------------------------------------------- 总结

以上是内存溢出为你收集整理的VB函数分析全部内容,希望文章能够帮你解决VB函数分析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存