万能动态库调用工具IDMA(InvokeDllMethodsAdvance)
万能动态库调用工具IDMA
开发者:马兆瑞 QQ/微信:624762543
百度云下载链接:https://pan.baidu.com/s/1skW5W4H
CSDN下载链接:http://download.csdn.net/download/mzhrdd/10138218
1. 工具简介
1.1 工具示意图
1.2 功能简介
InvokeDllMethodsAdvance简称IDMA,是一个万能的动态库调用工具,不用编写任何代码,就可以调用符合WINAPI标准的任意动态库文件(WINAPI标准即__stdcall调用约定)。
此工具非常适合上位机软件开发或测试人员,可以省去编写demo的时间,直接使用此工具进行调试,有助于开发人员将更多的时间集中在功能开发上。
本工具的主要优点如下:
不用编写任何代码,即可调用动态链接库。
适合入职新员工或不懂动态链接库调用的人使用。
可以免去测试demo的编写, 减轻开发人员工作量。
非常适合动态链接库的开发调试、测试等工作。
1.3 技术实现
该工具界面主要使用C# WinForm编写,运行依赖于.net framework 4.0环境,底层采用C++封装,用汇编实现对函数的动态调用(函数参数的入栈及调用)
1.4 安装使用
该工具为绿色版,无需安装,直接运行 即可,如果提示缺少.NET环境,则安装 文件夹下的 后,再尝试运行该工具。
2. 主要功能及使用介绍
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 关于函数名及参数的调整
不管通过哪种方式获取的函数,都可以通过手动修改的方式,对函数名及参数进行调整。
通过右击已添加参数的行首,或底部的 按钮,可对函数的参数个数进行调整
附录 关于参数数据格式的详细说明
本工具将所有的数据类型归为5大类:HEX、整数、字符串、单精度小数、双精度小数。
HEX:为最基础的数据类型,也是最强大的数据类型,可以用来表示任何数据类型(包括结构体),其本质为变量在内存中的实际存储结构,一般用来传递数组(十六进制字符串)。其作为出参时只显示内容的第一个字节加省略号,可双击变量地址,根据实际情况输入需要查看的长度,才可查看完整数据。
例如:int temp1 = 1,则用HEX表示为:01000000,因为int在内存中是低字节在前,共占4个字节
unsigned char temp2[] = {0x12, 0x34, 0x56},则用HEX表示为:123456
char temp3[] = “123456”,则用HEX表示为:313233343536.(因字符’1’的ASCII码为49=0x31)
整数:用来表示常见的数字类型的变量,例如int、long、short等。(如果unsigned char用来表示整数,也需要指定为整数类型)
字符串:用来表示可见字符串,例如“123456”,不可见字符串请用HEX类型(如上述temp2)。
单精度小数:用来表示单精度小数类型,例如float
双精度小数:用来表示双精度小数类型,例如double
注:工具中会自动将带&或*的参数识别为出参,其余的算作入参,如与实际情况不符,请自行调整。
万能动态库调用工具IDMA(InvokeDllMethodsAdvance)的更多相关文章
- delphi之动态库调用和串口通讯
串口通讯: Spcomm 控件属性: CommName :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...
- Linux 静态库&动态库调用
1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...
- c++动态库封装及调用(3、windows下动态库调用)
1.DLL的隐式调用 隐式链接采用静态加载的方式,比较简单,需要.h..lib..dll三件套.新建“控制台应用程序”或“空项目”.配置如下: 项目->属性->配置属性->VC++ ...
- Windows下动态库的编译以及调用
1.MFC下生成动态库 1>显式调用 在.cpp文件里添加接口函数 int sum(int a,int b) { return a + b; } int sub(int a,int b) { r ...
- java使用JNA框架调用dll动态库
这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...
- c++调用动态库失败解决办法
c++调用动态库失败解决办法 之前写好的程序今天早上过来发现在服务器上出错了,于是就各种查问题,整整一个早上外加下午两个小时都在查这个问题,最终被我找到了问题: 在程序中我发现LoadLibrary( ...
- 【转】分析Linux和windows动态库
原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...
- linux静态与动态库创建及使用实例
一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...
- C 高级编程3 静态库与动态库
http://blog.csdn.net/Lux_Veritas/article/details/11934083http://www.cnblogs.com/catch/p/3857964.html ...
随机推荐
- win10 uwp Window.Current.Dispatcher中Current为null
本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期.如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在 ...
- JavaWeb之Maven配置
Maven和C#的nuget类似,可以通过设置就能引入框架等第三方,方便又省事.Java中使用Maven来管理第三方.今天尝试着配置了一下. 一.JDK的安装 关于JDK的安装可以查看百度经验,设置P ...
- inotify-tools + php脚本实现Linux服务器文件监控并邮件提醒
需求简介: 由于服务器被挂马,经常被写入涉敏感的html网页,领导时常被网监请去喝茶,呵呵你懂的.所以有两个需求,一是找出服务器的木马后门和修复代码漏洞,二是监控服务器涉及增删改查的文件. 第一个 ...
- jstl 处理Date 时间
1.引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> < ...
- Yii2之mailer的使用
Mailer组件是yii框架自带的用于收发邮件的组件,无需安装,只需做一些配置即可使用,非常便捷.本文就mailer组件从配置到使用进行简单讲解. 首先在config/main.php配置如下: ...
- LeetCode 62. Unique Paths(所有不同的路径)
A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...
- component及刚体rigidbody用法
关于getcomponent函数,rigidbody(2d)的嵌套关系及用法 1.getcomponent函数 在unity中脚本可以看成是可定义的组件,我们经常要访问同一对象或不同对象中的脚本,可以 ...
- JS深层继承
我们在书写JS的时候常常被一种现象困扰 let jsonA = { a1: { b1:1; }, }; let jsonB = jsonA; jsonB.a1.b1 = 2; console.log( ...
- js foreach、map函数
语法:forEach和map都支持2个参数:一个是回调函数(item,index,input)和上下文: •forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: ...
- 如何让只支持IE浏览器的jsp转为可以支持chrome
如果你的项目只能使用IE浏览器打开,你想让其支持chrome的话,可以试一下下面的代码哦: function showLayerDialog(url,paramFuction){ top.layer. ...