vb动态加载dll的一个类-实现vb动态加载dll并动态调用dll导出的函数的一个方便办法.docx
《vb动态加载dll的一个类-实现vb动态加载dll并动态调用dll导出的函数的一个方便办法.docx》由会员分享,可在线阅读,更多相关《vb动态加载dll的一个类-实现vb动态加载dll并动态调用dll导出的函数的一个方便办法.docx(6页珍藏版)》请在第壹文秘上搜索。
1、Vb动态加载d1.1.的一个类,实现vb动态加载d1.1.并动态调用d1.1.导出的函数的一个方便办法自从会vb用调用动态库函数以来,我一直在想:如何动态的调用d1.1.里的函数?网上有一个用Ca1.1.WindowProc函数的方法,不过我还是喜欢自己有个办法.今天工夫不负有心人,我终于把我心中一直想的办法给实现了,干脆就往自己的空间上贴吧专昔误的地方,希望可以得到有这方面的师傅给以指正,以求进步!对于系统api我没有尝试,如果调用约定相符,应该适用于对系统api的调用.我自己用c写个d1.1.,然后在vb里写了这个类.以下代码只是我简单的实现,主要的是看实现的道理.VC代码:I1.1.我把
2、d1.1.文件名命名为:d1.1.#inc1.ude#inc1.ude#inc1.ude#inc1.ude,stdafx.h,BOO1.APIENTRYDI1.Mairi(HAND1.EhModu1.e,DWORDu1._reason_for_ca1.1.,1.PVOIDIpReserved)(returnTRUE;)externCBOO1._dec1.spec(d1.1.export)add(inta)MeSSageBoXA(NU1.1.,运行在d1.1.里成功,MBJDK);a=999;return1;)/vb代码:类代码:Private状态标志AsBoo1.eanPrivate模块句柄A
3、s1.ongPrivate本地函数地址备份(0To4)AsBytePrivate被替换函数的地址As1.ongPub1.icFunction替换函数地址(模块名AsString,函数名AsStringz本地函数地址As1.ong)AsBoo1.eanIfO=本地函数地址Then替换函数地址=OExitFunctionEndIf被替换函数的地址=替换函数地址Dim函数地址As1.ongDimaAs1.ongDim跳转指令(OTo4)AsByte加载模块模块句柄=1.Oad1.ibrary(模块名)IfO模块句柄Then状态标志=1E1.se:替换函数地址二OExitFunctionEndIf检索
4、函数地址函数地址=GetPrOCAddreSS(ByVa1.模块句柄,ByVaI函数名)If0函数地址Then状态标志=1E1.se替换函数地址=0ExitFunctionEndIf计算跳转地址a二函数地址-(本地函数地址+5)构造跳转地址跳转指令(0)=233a=WriteProcessMemory(-1.zByVa1.VarPtr(跳转指令Q),ByVaIVarPtr(八)z4,0)If0=aThen替换函数地址二0ExitFunctionEndIf先备份本地函数入口指令a=WriteProcessMemory(-1.zByVaIVarPtr(本地函数地址备份(0),ByVaI本地函数地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vb 动态 加载 dll 一个 实现 调用 导出 函数 方便 办法

链接地址:https://www.1wenmi.com/doc/1303073.html