怎么调用一个dll中的带有参数默认值的函数

 我来答
闽悌1353
2017-06-07 · TA获得超过407个赞
知道答主
回答量:365
采纳率:0%
帮助的人:84.2万
展开全部
微软有一个工具叫做dependency walker或者Visual Studio附带的一个工具dumpbin可以查看dll的导出函数名称,函数参数和调用方式(比如__cdecl或__stdcall)在工具里无法显示,需要使用IDA或者OllyDbg等反汇编器将DLL反汇编,通过定位导出函数结尾的retn指令判断参数个数和调用方式。由被调用者平栈通常为__stdcall,由调用者平栈则是__cdecl,平栈的字节数除以字长(例如retn 0C中的0C在x86下是除以4,在x64下除以8)即可得到参数个数(这也是通常,具体问题可能需要具体分析),至于参数意义,那就完全需要头文件支持,或者分析反汇编代码的意义了。
在IDA里,还可以使用F5快捷键将反汇编代码转换为C代码,能稍稍方便一点。
最后一个问题,至于思路的话,你可以查看DLL的导出函数,然后使用Detours类库将原来的函数HOOK一下,做个旁路,在HOOK函数中打印调用内容,这样你在日志文件或调试输出中就能看见调用规律了。纯属个人建议。
还有一个工具叫做API Monitor,能够检测API调用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式