万能动态库调用工具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)的更多相关文章

  1. delphi之动态库调用和串口通讯

    串口通讯: Spcomm 控件属性: CommName  :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...

  2. Linux 静态库&动态库调用

    1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...

  3. c++动态库封装及调用(3、windows下动态库调用)

    1.DLL的隐式调用 隐式链接采用静态加载的方式,比较简单,需要.h..lib..dll三件套.新建“控制台应用程序”或“空项目”.配置如下: 项目->属性->配置属性->VC++ ...

  4. Windows下动态库的编译以及调用

    1.MFC下生成动态库 1>显式调用 在.cpp文件里添加接口函数 int sum(int a,int b) { return a + b; } int sub(int a,int b) { r ...

  5. java使用JNA框架调用dll动态库

    这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...

  6. c++调用动态库失败解决办法

    c++调用动态库失败解决办法 之前写好的程序今天早上过来发现在服务器上出错了,于是就各种查问题,整整一个早上外加下午两个小时都在查这个问题,最终被我找到了问题: 在程序中我发现LoadLibrary( ...

  7. 【转】分析Linux和windows动态库

    原文地址:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Lin ...

  8. linux静态与动态库创建及使用实例

    一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...

  9. C 高级编程3 静态库与动态库

    http://blog.csdn.net/Lux_Veritas/article/details/11934083http://www.cnblogs.com/catch/p/3857964.html ...

随机推荐

  1. win10 uwp Window.Current.Dispatcher中Current为null

    本文说的是进行网络中异步界面出现的错误,可能带有一定的主观性和局限性,说的东西可能不对或者不符合每个人的预期.如果觉得我有讲的不对的,就多多包含,或者直接关掉这篇文章,但是请勿生气或者发怒吐槽,可以在 ...

  2. JavaWeb之Maven配置

    Maven和C#的nuget类似,可以通过设置就能引入框架等第三方,方便又省事.Java中使用Maven来管理第三方.今天尝试着配置了一下. 一.JDK的安装 关于JDK的安装可以查看百度经验,设置P ...

  3. inotify-tools + php脚本实现Linux服务器文件监控并邮件提醒

      需求简介: 由于服务器被挂马,经常被写入涉敏感的html网页,领导时常被网监请去喝茶,呵呵你懂的.所以有两个需求,一是找出服务器的木马后门和修复代码漏洞,二是监控服务器涉及增删改查的文件. 第一个 ...

  4. jstl 处理Date 时间

    1.引入 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> < ...

  5. Yii2之mailer的使用

     Mailer组件是yii框架自带的用于收发邮件的组件,无需安装,只需做一些配置即可使用,非常便捷.本文就mailer组件从配置到使用进行简单讲解.  首先在config/main.php配置如下: ...

  6. 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 ...

  7. component及刚体rigidbody用法

    关于getcomponent函数,rigidbody(2d)的嵌套关系及用法 1.getcomponent函数 在unity中脚本可以看成是可定义的组件,我们经常要访问同一对象或不同对象中的脚本,可以 ...

  8. JS深层继承

    我们在书写JS的时候常常被一种现象困扰 let jsonA = { a1: { b1:1; }, }; let jsonB = jsonA; jsonB.a1.b1 = 2; console.log( ...

  9. js foreach、map函数

    语法:forEach和map都支持2个参数:一个是回调函数(item,index,input)和上下文: •forEach:用来遍历数组中的每一项:这个方法执行是没有返回值的,对原来数组也没有影响: ...

  10. 如何让只支持IE浏览器的jsp转为可以支持chrome

    如果你的项目只能使用IE浏览器打开,你想让其支持chrome的话,可以试一下下面的代码哦: function showLayerDialog(url,paramFuction){ top.layer. ...