精华内容
下载资源
问答
  • dll使用C++写dll是打包算法处理。 以最简单加法为例 int byjTestFunc_Add(int a, int b) { int u8Temp = 0; u8Temp = a + b;...asp.net 应该怎么调用这个算法去运算并返回运算值呢?
  • 我调用一个dll里面回调函数,原型说明如下,请问怎么调用?感觉原型有问题,和我看资料不一样 void (WINAPI SetCallback)(long caller,long userdata); 设置回调,回调函数将接收终端传过来数据和消息 回...
  • 有一个VB的工程项目,里面有很多类,每个类都有相同的函数; 比如 a工程;类模块有 b类,c类;而b类和c类都有相同的函数d; 我怎么在C#动态调用b类的d函数呢? 因为是动态调用,所以不能是直接引用dll,再...
  • 做了一个win32DLL,想调用里面的函数:void func() 看网上一般都是建一个win32 console的工程,然后类似下面这样通过win32的宏用函数指针调用: int _tmain(int argc, _TCHAR* argv[]) { HINSTANCE hDllInst; ...
  • cpp里的函数 CheckDeviceInfo @5 .def文件里的导出函数 以上是MFCDLLproject里面的 HMODULE m_hModule; m_hModule=::LoadLibraryA(".\\ControlV_A.dll"); //m_hModule=::LoadLibraryA...

    typedef struct S_DeviceINFO
    {
    CString mName[50];
    CString mCaption[50];
    CString mDeviceID[50];
    CString mManufacturer[50];
    }S_DeviceInfo;
    extern "C" bool  _stdcall EXPORT CheckDeviceInfo(CString mCmd,S_DeviceInfo &info);

    结构体和函数声明

    extern "C" bool PASCAL EXPORT CheckDeviceInfo(CString mCmd,S_DeviceInfo &info)
    {

    for(int i=0;i++;i<50)

    {

    info.mName[i]="UUU";

    info.mCaption[i]="UUU";

    info.mDeviceID[i]="UUU";

    info.mManufacturer[i]="UUU";

    }

    }

    cpp里的函数

    CheckDeviceInfo                                         @5

    .def文件里的导出函数

    以上是MFCDLLproject里面的


    HMODULE m_hModule;
    m_hModule=::LoadLibraryA(".\\ControlV_A.dll");
    //m_hModule=::LoadLibraryA("MicTestdll.dll");


    if(m_hModule==NULL)
    {
    AfxMessageBox("fail");
    return;
    }

    typedef bool    (__stdcall* GetDeviceInfo)(CString,S_DeviceInfo &);

    GetDeviceInfo pInfo;

    pInfo=(GetDeviceInfo)::GetProcAddress(m_hModule,"CheckDeviceInfo");

    S_DeviceInfo info;
    pInfo("hello",info);




    其他4个函数都有获取到函数地址,唯一没有获取到的是传结构体的  ,我怀疑是不是传结构体有问题,我的dll里面结构体的申明和调用的project里面的申明一模一样  求大神帮忙解答。。。

    展开全文
  • ``` c++ 给我文档里面写 typedef void* IPC_DEV_HANDLE; ...typedef void** PIPC_DEV_HANDLE;...bsFlag [in] 参数,可能... dll文件名 是 BSIPC.DLL 跪求大神帮帮忙 告诉我下我该怎么写,没做过引入外部dll....
  • 现在有个一参数为结构体 里面放是多个回调函数 typedef struct { void ( *Es_RecvFromClient )( const void *sender,uchar receid); void ( *Es_SendToClient )( const void *sender,uchar receid); } 这种...
  • 设置设备状态变化、或者有接收到事件、告警时回调函数。 参数: fStatusEventCallBack:回调用函数,声明原型为:typedef LONG(CALLBACK *StatusEventCallBack)(LONG lUser,LONG nStateCode,char *pResponse,...
  • exe先加载DLL,然后呢? DLL里面要声明exe的函数名称?我不懂,具体怎么做??? 请写一个例子给我,谢谢了
  • 具体调用的函数如下 ![图片说明](https://img-ask.csdn.net/upload/201712/12/1513073186_707668.jpg) C#代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data...
  • #1得分:5回复于:2010-07-06 23:12:07以下代码来自看雪论坛[code]前两天想搞出一个游戏封包解密函数,又懒怕还原成高级语言想直接调用他EXE内部解密函数,本来记得PEDIY有篇文章是增加节来导出内部函数的,...

    #1

    得分:5

    回复于:

    2010-07-06 23:12:07

    以下代码来自看雪论坛

    [code]

    前两天想搞出一个游戏的封包解密函数,又懒怕还原成高级语言 想直接调用他EXE内部的解密函数,

    本来记得PEDIY的有篇文章是增加节来导出内部函数的,但是找不到那篇文章了;所以就开始自己尝试一下,现在以自己写的一个EXE为类型

    先写一个EXE程序

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure DoPub;//内部函数 等待导出

    begin

    MessageBox(0, 'Test', 'Test', MB_OK);

    end;

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    MessageBox(0, 'Test', 'Test', MB_OK);

    end;

    end.

    上面编译成成 hook32.exe 名字为Hook没什么意思 只是个人习惯 跟钩子没关联 呵呵

    然后用OD载入我们的程序 下段BP MessageBoxA 按 按钮运行 断下 执行到返回

    00456498 >/$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL

    0045649A |. 68 AC644500 PUSH hook32.004564AC ; |Title = "Test"

    0045649F |. 68 AC644500 PUSH hook32.004564AC ; |Text = "Test"

    004564A4 |. 6A 00 PUSH 0 ; |hOwner = NULL

    004564A6 |. E8 A509FBFF CALL ; \MessageBoxA

    004564AB \. C3 RETN

    得知我们的内部函数地址为 00456498 这里我就偷懒啦 用LORDPE的文件计算器

    计算 RVA=00056498

    Offset=00055898

    好了现在来修改导出表,再次偷懒 不加新节啦,WinHex打开文件 直接找个程序空白的地方

    我在偏移64B90找到大片0字节区域 好就在这里开刀啦

    这里我们先来熟悉一下导出表结构

    Characteristics 4字节

    TimeDateStamp 4字节

    MajorVersion 2字节

    MinorVersion 2字节

    Name 4字节

    Base 4字节

    NumberOfFunctions 4字节 你要导出函数的个数

    NumberOfNames 4字节 你要导出函数名称的个数

    AddressOfFunctions 4字节 //函数地址

    AddressOfNames 4字节 //函数名地址

    AddressOfNameOrdinals 4字节 //函数名顺序地址

    注意上面都是保存RVA的值哦 千万别搞错了

    好了 让我们来根据上面结构来在偏移64B90 处构造导出表

    我们的模块名字是 hook32.exe 到出名字就随便起个吧 我这里叫 _W

    构建如下

    Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F

    00064B90 00 00 00 00 00 00 00 00 00 00 00 00 C2 E7 06 00 ............络..

    00064BA0 01 00 00 00 01 00 00 00 01 00 00 00 B8 E7 06 00 ............哥..

    00064BB0 BC E7 06 00 C0 E7 06 00 98 64 05 00 CD E7 06 00 肩..犁..榙..顽..

    00064BC0 00 00 68 6F 6F 6B 33 32 2E 65 78 65 00 5F 57 00 ..hook32.exe._W.

    也就是

    ->Export Table

    Characteristics: 0x00000000

    TimeDateStamp: 0x00000000 (GMT: Thu Jan 01 00:00:00 1970)

    MajorVersion: 0x0000

    MinorVersion: 0x0000 -> 0.00

    Name: 0x0006E7C2 ("hook32.exe")

    Base: 0x00000001

    NumberOfFunctions: 0x00000001

    NumberOfNames: 0x00000001

    AddressOfFunctions: 0x0006E7B8

    AddressOfNames: 0x0006E7BC

    AddressOfNameOrdinals: 0x0006E7C0

    Ordinal RVA Symbol Name

    ------- ---------- ----------------------------------

    0x0001 0x00056498 "_W"

    bujin888

    2008-06-22, 02:52

    导出表做好后 就让我们把导出表更新到PE结构里面去吧

    用OD载入程序 ALT+M打开内存 选择 hook32 PE文件头那行 进入PE文件头数据窗口

    看到

    0040003C 00010000 DD 00000100 ; Offset to PE signature

    这句话的意思说 PE文件头在偏移100处

    我们来到偏移100处

    00400100 50 45 00 00>ASCII "PE" ; PE signature (PE)

    00400104 4C01 DW 014C ; Machine = IMAGE_FILE_MACHINE_I386

    00400106 0900 DW 0009 ; NumberOfSections = 9

    00400108 4E255D48 DD 485D254E ; TimeDateStamp = 485D254E

    0040010C 00000000 DD 00000000 ; PointerToSymbolTable = 0

    00400110 00000000 DD 00000000 ; NumberOfSymbols = 0

    00400114 E000 DW 00E0 ; SizeOfOptionalHeader = E0 (224.)

    00400116 8E81 DW 818E ; Characteristics = EXECUTABLE_IMAGE|32BIT_MACHINE|LINE_NUMS_STRIPPED|LOCAL_SYMS_STRIPPED|BYTES_REVERSED_LO|BYTES_REVERSED_HI

    00400118 0B01 DW 010B ; MagicNumber = PE32

    0040011A 02 DB 02 ; MajorLinkerVersion = 2

    0040011B 19 DB 19 ; MinorLinkerVersion = 19 (25.)

    0040011C 00600500 DD 00056000 ; SizeOfCode = 56000 (352256.)

    00400120 00E80000 DD 0000E800 ; SizeOfInitializedData = E800 (59392.)

    00400124 00000000 DD 00000000 ; SizeOfUninitializedData = 0

    00400128 1C770500 DD 0005771C ; AddressOfEntryPoint = 5771C

    0040012C 00100000 DD 00001000 ; BaseOfCode = 1000

    00400130 00800500 DD 00058000 ; BaseOfData = 58000

    00400134 00004000 DD 00400000 ; ImageBase = 400000

    00400138 00100000 DD 00001000 ; SectionAlignment = 1000

    0040013C 00020000 DD 00000200 ; FileAlignment = 200

    00400140 0400 DW 0004 ; MajorOSVersion = 4

    00400142 0000 DW 0000 ; MinorOSVersion = 0

    00400144 0000 DW 0000 ; MajorImageVersion = 0

    00400146 0000 DW 0000 ; MinorImageVersion = 0

    00400148 0400 DW 0004 ; MajorSubsystemVersion = 4

    0040014A 0000 DW 0000 ; MinorSubsystemVersion = 0

    0040014C 00000000 DD 00000000 ; Reserved

    00400150 00F00600 DD 0006F000 ; SizeOfImage = 6F000 (454656.)

    00400154 00040000 DD 00000400 ; SizeOfHeaders = 400 (1024.)

    00400158 00000000 DD 00000000 ; CheckSum = 0

    0040015C 0200 DW 0002 ; Subsystem = IMAGE_SUBSYSTEM_WINDOWS_GUI

    0040015E 0000 DW 0000 ; DLLCharacteristics = 0

    00400160 00001000 DD 00100000 ; SizeOfStackReserve = 100000 (1048576.)

    00400164 00400000 DD 00004000 ; SizeOfStackCommit = 4000 (16384.)

    00400168 00001000 DD 00100000 ; SizeOfHeapReserve = 100000 (1048576.)

    0040016C 00100000 DD 00001000 ; SizeOfHeapCommit = 1000 (4096.)

    00400170 00000000 DD 00000000 ; LoaderFlags = 0

    00400174 10000000 DD 00000010 ; NumberOfRvaAndSizes = 10 (16.)

    00400178 00000000 DD 00000000 ; Export Table address = 0

    0040017C 00000000 DD 00000000 ; Export Table size = 0

    00400180 00F00500 DD 0005F000 ; Import Table address = 5F000

    00400184 94240000 DD 00002494 ; Import Table size = 2494 (9364.)

    00400188 00A00600 DD 0006A000 ; Resource Table address = 6A000

    0040018C 00480000 DD 00004800 ; Resource Table size = 4800 (18432.)

    00400190 00000000 DD 00000000 ; Exception Table address = 0

    00400194 00000000 DD 00000000 ; Exception Table size = 0

    00400198 00000000 DD 00000000 ; Certificate File pointer = 0

    0040019C 00000000 DD 00000000 ; Certificate Table size = 0

    004001A0 00400600 DD 00064000 ; Relocation Table address = 64000

    004001A4 345B0000 DD 00005B34 ; Relocation Table size = 5B34 (23348.)

    004001A8 00000000 DD 00000000 ; Debug Data address = 0

    004001AC 00000000 DD 00000000 ; Debug Data size = 0

    004001B0 00000000 DD 00000000 ; Architecture Data address = 0

    004001B4 00000000 DD 00000000 ; Architecture Data size = 0

    文件头结构有很多 我们只要 关心 这两行就可以

    00400178 00000000 DD 00000000 ; Export Table address = 0

    0040017C 00000000 DD 00000000 ; Export Table size = 0

    这里是保存 导出表的地址和大小的地方

    用OD相对偏移计算如下

    $+178 00000000 DD 00000000 ; Export Table address = 0

    $+17C 00000000 DD 00000000 ; Export Table size = 0

    也就是说 导出表地址和长度保存在文件偏移 178 和17C处

    用winhex打开文件 ALT+G 来到偏移178处 将原来我们构造导出表的地址00064B90 转换为RVA为6E790

    偏移178处4个字节改成 90 E7 06 00 数了一下我们的导出表共有64个字节16进制为0x40

    与是偏移178处4个字节改成40 00 00 00 到这里就一切OK了 保存好修改好的PE结构 然后我们写个程序来调用一下这个到处函数看看

    unit Unit1;

    interface

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, StdCtrls;

    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;

    var

    Form1: TForm1;

    doSth:procedure;

    pfun:DWORD;

    implementation

    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);

    var

    DLLModule:DWORD;

    begin

    DLLModule := LoadLibrary('hook32.exe');

    doSth:= GetProcAddress(DLLModule,'_W'); //取得API地址

    doSth;

    end;

    end.

    试验结果 HOOK32.EXE的内部函数被成功调用了!

    [/code]

    展开全文
  • 我现在有这样一个DLL文件TianLe....方法是:在项目名称上点击右键,选择“添加引用”,然后通过浏览把你的TianLe.TianLeWeb.dll添加进来,就可以在整个项目中调用TianLe.TianLeWeb.dll的函数,方法,类了。

    我现在有这样一个DLL文件TianLe.TianLeWeb.dll
    <%@ Page language="c#" Codebehind="left.aspx.cs" AutoEventWireup="false" Inherits="TianLe.TianLeWeb.admin.left" %>
    这样为什么调用不了?

     

     

    最佳答案

     

    要引用其它的Dll文件,应该通过添加引用来实现。方法是:在项目名称上点击右键,选择“添加引用”,然后通过浏览把你的TianLe.TianLeWeb.dll添加进来,就可以在整个项目中调用TianLe.TianLeWeb.dll 中的函数,方法,类了。

    展开全文
  • 这是C++写的函数格式, extern __declspec(dllexport) void aa(int num,...) 现在请问下,这个要在C#里边该怎么调用呢。
  • 我想练习 编写dll文件,实现对里边函数的调用。 extern "C" __declspec(dllexport)int sub(int q) { char c[25]; int d=q-4; itoa(d,c,10); MessageBox(0,c, "a-b;结果:", 1); return 0; } ...
  • VBA在32位office2010上面没问题, 已经加了“PtrSafe” 换到win10 office365 SetupDiEnumDeviceInterfaces这个函数无法读到信息。 谁知道怎么解决啊?先谢谢大神了。
  • MF_ReadSNR是调用DLL方法来读取卡片第一扇区编码(看做ID),这个C++函数里他用指针方法来调用,但是我们想用C#方法进行开发,不知道cSNRString这个参数该怎么定义才能调用这个函数? 希望有高手解答 +Q...
  • 调用店家给的dll文件时(显式调用),总是发现没反应,后来借用depends打开dll查看,看下图,发现dll里面的函数都被编译器加上了前缀和后缀,上网查了一下,是什么重载之类的说法,我就在想怎么把前缀给去掉,可是...

    这几天做一个项目,需要用到一个X宝上买的读卡器,在调用店家给的dll文件时(显式调用),总是发现没反应,后来借用depends打开dll查看,看下图,发现dll里面的函数都被编译器加上了前缀和后缀,上网查了一下,是什么重载之类的说法,我就在想怎么把前缀给去掉,可是找了好久都没找到什么方法,也去贴吧和相关的QQ群去询问,未果!昨天下班后我就自己在加班,后来发现使用显示调用,直接resolve改变后的函数名酒可以调用了,下图


    本来的函数名是CloseReader,改变后的是?CloseReader@@YAHXZ,直接resolve?CloseReader@@YAHXZ就能用了,我只用了显示调用这种方法,其他的方法大家有时间可以去试试,我还要做别的,暂时没时间,大家有问题,参考我的看能不能成功,有问题留言,一起进步

    展开全文
  • VB如何调用dll函数

    2016-07-14 10:53:12
    假如我有个DLL,名为 asdfg.dll 它里面有一个函数 zxc(参数1,参数2) 我要用这个函数,该怎么写? 1.在工程-引用中将asdfg.dll引用过来  2.dim AAA as asdfg 'asdfg是类模块名称 Private Sub Form_Load() dim ...
  • c语言怎么调用dll文件

    万次阅读 2013-03-06 15:39:09
      dll调用: (1)一般动态链接库有头文件...使用时候需要引用文件中加上#pragma comment (lib, "xxx.lib")就可以,然后可以调用dll里面函数等 (2)如果只有lib,h文件,那这是静态链接库,同上面一样
  • 现在有一个IC读写器,厂家提供了.dll,.lib,.h文件以及API,怎么用java调用里面的函数?网上搜索了一下,说什么JNI,谁能具体点不?
  • 今日介绍使用模板,来快速创建Windows窗口图形界面程序...模板创建方法是上次介绍,参见:视频:1小时学会用C++编写Windows窗口图形界面程序,不用MFC模板源代码下载链接(长按复制到浏览器,支持VC2010、VC6打开):...
  • dll文件有一个函数,这个函数有一个输入参数,一个输出参数,然后还有一个返回值,现在我要用java调用这个函数的输出参数,应该怎么调用, 我现在在调用这个函数的时候得到是这个函数的返回值而不是输出参数...
  • Java小知识:怎么调用dll&so动态库?

    千次阅读 2018-12-04 17:17:12
    使用Java调用dll&amp;amp;amp;amp;amp;amp;amp;so动态库的函数 *应用背景:项目中需要调用一项其他平台提供的服务,是一位C语言老大哥写的,可牛啦。但是因为一些特殊原因导致不能通过API调用的方式实现,最终...
  • 平台只有一个在跑,而游戏是N个,工程B(平台)的mc被赋值成工程C(游戏)的对象,通过工程A的接口,mc可以调用工程C(游戏)里的函数(接口的实现)。 问题: 我在开发一个新游戏时,发现工程A(接口)类AI的接口...
  • 这个bug找了将近一天,上层调用dll库里面的函数,传入的结构体结构调试发现参数全部是系统默认的了,不是我传入的参数,void SaveEncPara(CARD_PARA stPara, int card);这个函数是dll库我封装的,结果上层传入...
  • 作为一个编程小白,最近在做毕业设计需要用到前人写好的C++程序,而且这个C++程序里的函数是以数组指针作为返回值,而我用的是python,一时之间竟然不知道该怎么帮。 在找寻了一些资料后找到了下面的解决方法。 #...
  • dll是注册后直接调用的 Private Sub Form_Load() Me.Show Dim myt As New remote.Class1 '声明 ...c = myt.test(a, b) '另一个dll的函数名为test1() Print c End Sub 本的新手求大神帮帮!
  • 非托管DLL的函数 HANDLE myfunction (char FileName[][512], int FileCount) 这个函数如何在C#里怎么写函数签名,如何调用
  • 我最近在做C#调用C++写的dll ,现在出现一个问题,就是c++的函数里有这样一个参数 char* argv[]请问,C#,我该怎么样传参数给他!__declspec(dllimport) int PlayerDoOpen(HWND hOwner,LPRECT lpRect,int argc,...
  • 发现在钩子函数HOOK回调函数调用的DLL全局变量都是空值(吓尿了),也就是说从外部传入值虽然保存在DLL的全局变量,但是钩子函数的回调函数根本获取不到!!!可是需要这些变量跟MFC程序进行消息交互呀!!...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 149
精华内容 59
关键字:

怎么调用dll里的函数