InvokeDllMethodsAdvance是一个国产的万能动态库调用工具,不用编写任何代码,就可以调用符合WINAPI标准的任意动态库文件(WINAPI标准即__stdcall调用约定)。国产IDMA工具界面主要使用C#WinForm编写,运行依赖于.netframework4.0环境,底层采用C++封装,用汇编实现对函数的动态调用(函数参数的入栈及调用)
此工具非常适合上位机软件开发或测试人员,可以省去编写demo的时间,直接使用此工具进行调试,有助于开发人员将更多的时间集中在功能开发上。
不用编写任何代码,即可调用动态链接库。
适合入职新员工或不懂动态链接库调用的人使用。
可以免去测试demo的编写,减轻开发人员工作量。
非常适合动态链接库的开发调试、测试等工作。
2.1主要步骤
1、选择所要调用的动态库文件
2、选择动态库配套的头文件及函数
3、填写完参数后,调用该函数
4、函数的出参或返回值会展示在对应的位置
2.2选择动态库
该操作完成对动态库的加载LoadLibrary
2.2.1选择动态库方式一:通过浏览文件选择
点击按钮可通过浏览的方式选择所要调用的动态库。
2.2.2选择动态库方式二:通过拖拽文件选择
拖拽所要调用的动态库文件至动态库路径文本框。
2.2.3选择动态库方式三:同时拖拽动态库和头文件
拖拽所要调用的动态库文件及头文件,至参数列表表格DataGridView。
2.3选择头文件及函数
选择头文件的方式有三种,同上节中的动态库选择,一种通过按钮的方式,两种通过拖拽的方式。
2.3.1获取函数的方式一:选择头文件
通过选择头文件建立一个快速的函数切换列表,并自动将选定的函数参数拆分,便于填写和查看出入参。
选定一个函数后,工具会自动将函数拆分出参数类型、参数名称、参数数值、入参/出参、数据格式,如果自动分析出的入参/出参类型、数据格式等不符合实际情况,需自行勾选更改。(参数数值、入参/出参、数据格式是调用函数时最重要的三部分,只要这三部分设置正确,参数类型、参数名称的对错不影响函数的调用,无需关心。关于数据格式的详细说明请见附录)
注:1、头文件中的一个函数只能占一行,不符合需修改后再使用。
2、解析函数功能会自动忽略以下开头的行:/ # { } extern
2.3.2获取函数的方式二:手动填写函数名及参数
也可以不选择头文件,手动在中填写需要调用函数名,并在参数列表中追加需要的参数。追加或插入的参数默认为空行,参数数值、入参/出参、数据格式是调用函数时最重要的三部分,只要这三部分填写正确,参数类型、参数名称可不填写。关于数据格式的详细说明请见附录
2.3.3关于函数名及参数的调整
不管通过哪种方式获取的函数,都可以通过手动修改的方式,对函数名及参数进行调整。
通过右击已添加参数的行首,或底部的按钮,可对函数的参数个数进行调整
2.4工具使用示例
在文件夹下存在一个测试用的动态库文件:,该动态库导出了一个名为add的函数,函数的具体内部实现如下:
extern"C"int__stdcalladd(intnum1,intnum2,int*multi)
{
*multi=num1*num2;
returnnum1+num2;
}
使用工具调用该动态库的示例如下:
1、选择所要调用的动态库文件。点击选择动态库按钮,通过文件浏览的方式选择test.dll,选择完成后在Path中会显示dll文件的全路径。如下图一。
2、选择动态库配套的头文件及函数。点击选择头文件按钮,通过文件浏览的方式选择test.h,选择完成后在Methods下拉列表中会显示从.h中解析出的所有函数。本示例选择add函数,如下图一。
3、填写完参数后,调用该函数。在Methods下拉列表中选择add函数后,程序会自动解析并将函数的所有参数展示在下方的表格中,填写完入参后,点击Invoke按钮。本示例填写的入参为6和8,如下图一。
4、函数的出参或返回值会展示在对应的位置。本示例的出参为48,返回值为14,如下图二。(0xE是14的十六进制等价显示)
图一
图二
附录关于参数数据格式的详细说明
本工具将所有的数据类型归为5大类:HEX、整数、字符串、单精度小数、双精度小数。
HEX:为最基础的数据类型,也是最强大的数据类型,可以用来表示任何数据类型(包括结构体),其本质为变量在内存中的实际存储结构,一般用来传递数组(十六进制字符串)。其作为出参时只显示内容的第一个字节,后面的内容用*省略,可双击变量地址,根据实际情况输入需要查看的长度,才可查看完整数据。
例如:inttemp1=1,则用HEX表示为:01000000,因为int在内存中是低字节在前,共占4个字节
unsignedchartemp2[]={0x12,0x34,0x56},则用HEX表示为:123456
chartemp3[]=“123456”,则用HEX表示为:313233343536.(因字符’1’的ASCII码为49=0x31)
整数:用来表示常见的数字类型的变量,例如int、long、short等。(如果unsignedchar用来表示整数,也需要指定为整数类型)
字符串:用来表示可见字符串,例如“123456”,不可见字符串请用HEX类型(如上述temp2)。
单精度小数:用来表示单精度小数类型,例如float
双精度小数:用来表示双精度小数类型,例如double
注:工具中会自动将带&或*的参数识别为出参,其余的算作入参,如与实际情况不符,请自行调整。
未经书面许可,严禁将本网内容作为AI训练资源。
33台词PC版 0.1
文件批量改名Bulk Rename Utility v3.4.1 中文绿色版
PDF快转(SanPDF) v2.0.6.66 官方版
菲菲更名宝贝之得意非凡FFRenamePro V4.0专业版
查找大文件(WizTree) v3.35 绿色版
文件比较查重工具WinMerge v2.16.8.0 中文版
Windows文件管理器(WinNc) v9.4.0.0 官方安装版
文件压缩档案提取(Explzh) v8.18 官方版
WinMerge v2.16.7.0 官方多语中文版
UltraCompare文件比较工具汉化修正中文版 V21.10.0.20免费64位注册码绿色版
文档自动转换工具BlackIce BiBatchConverter v4.80.632 官方版
批量文本文件处理器 V1.4绿色版
MAXHUB文档客户端 v1.3.1官方PC版
文件校验工具(EF CheckSum Manager) v20.02 官方版
全速pdf转换成excel转换器 v7.8.0.0官方版