问题标签 [getprocaddress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
259 浏览

dll - 在 firemonkey 应用程序中使用 VCL dll

是否可以在 firemonkey 应用程序中使用 VCL dll?我正在尝试将 VCL dll 动态链接到我的 firemonkey 应用程序。GetProcAddress 返回 NULL;这可能是由于两个框架不兼容造成的吗?

是否需要将任何特定代码添加到我的 FM 应用程序才能使 VCL 正常工作?

谢谢和问候, 普里亚

0 投票
2 回答
2627 浏览

c++ - C++ GetProcAddress() 找不到静态类的方法

我需要在 C++ 中动态加载一个 dll。

我按照本教程http://msdn.microsoft.com/en-us/library/ms235636.aspx创建了 dll,一切正常。

然后我跟着这个http://msdn.microsoft.com/en-us/library/64tkc9y5.aspx我已经调整了控制台应用程序如下:

DLL 已正确加载且不为空。问题是始终返回 0 的 GetProcAddress() 函数。

我已经尝试过命名空间、类名、方法名的每种组合。我尝试在函数名中使用范围运算符 (::) 而不是 @。

我试图将整个命名空间定义为 extern "C" 但没有任何变化。每次我运行或调试控制台应用程序时,它都找不到“乘法”功能。

我想我错过了一些东西......我哪里错了?


编辑

Dependency Walker 向我展示了以下导出表:

DLL 导出表

现在我想知道函数名的最后一部分是什么意思......为什么 __declspec(dllexports) 添加这些符号?

0 投票
1 回答
12628 浏览

c++ - GetModuleHandle(),用于另一个进程中的 DLL

标题确实解释了这一切,我有一个进程进入另一个进程。我需要能够在这个程序上为某个不是 Windows 标准的 DLL 获取模块句柄,并且我没有主程序的源代码。

我需要使用它来调用带有 GetProcAddress 的导出函数,最后在 CreateRemoteThread 中使用它来远程启动该程序上的任务。

无论如何我可以从另一个程序中获取一个 ModuleHandle,而不是它正在创建远程线程的本地程序吗?

谢谢。

0 投票
1 回答
2084 浏览

c++ - 使用 GetProcAddress 和 EasyHook 挂钩类方法和构造函数

我使用EasyHook将系统 API 例程(在 C++ 中)从库中挂钩,取得了很大的成功。这些库一直是扁平的,基本上充满了全局可调用例程。这是一个使用User32.dll 库中的MessageBeep()的小示例(减去设置代码):

这一切都很好。问题是,我现在需要从一个类中挂钩方法,而不仅仅是一个全局函数。我并不真正关心对象本身,我更感兴趣的是检查方法的参数,仅此而已。我不知道如何在语法上识别 GetProcAddress() 的函数名称参数中的例程,我什至不确定 GetProcAddress() 是否支持它。例如,我想将Pen::SetColor()方法从 gdiplus.dll 库中挂钩:

这当然行不通,我认为GetProcAddress(hGDIPlus, "Pen.SetColor")不正确。如何为 GetProcAddress() 指定一个类的成员函数?这甚至可能吗?另外,如果我想挂钩诸如Pen::Pen()之类的构造函数,这会怎样?

0 投票
1 回答
2271 浏览

c++ - 从 HANDLE 到 HINSTANCE 的无效转换(获取内核函数的地址)

我正在尝试找到SetProcessDEPPolicyWindows API 函数的地址kernel32请参阅我的问题here和我得到的第一个答案)。

我以前从未编写过 Windows C++ 程序,所以我有点迷茫,但到目前为止我有这个:

我在第 7 行收到以下错误:

我找不到任何关于如何从谷歌解决这个问题的好主意。

(一旦我得到这个编译,我怎么能打印指针中的地址?)

编辑:从评论中添加了 Cyclone 的建议,得到同样的错误Invalid conversion from HANDLE to HINSTANCE

0 投票
1 回答
823 浏览

arguments - 如何使用 GetProcAddress() 加载具有无限函数参数的函数?

我浏览了互联网,但没有找到答案。

以前我们使用 def 文件使用静态链接。目前这种方法不适合,因为在某些情况下 dll 无法访问。

所以现在我们需要动态加载具有无限函数参数的函数。

有没有通用的方法?只需朝着正确的方向推进或与此相关的一些主题就可以了。

0 投票
2 回答
110 浏览

c++ - 在 C++ 中创建 DLL 以在 VS 2005 中导入 C++ DLL

我正在尝试将 C++ DLL 链接到我将创建的新 C++ DLL,

我已经逐步按照下面的教程和许多其他教程进行操作,但是“GetProcAddress”函数返回NULL“ http://www.dreamincode.net/forums/topic/118076-dlls-explicit-linking/

这是我尝试从 DLL 调用的函数的原型:

int RemoveAllDataFile(unsigned int id);

该函数返回 1,因此 DLL 加载成功。

}

0 投票
0 回答
173 浏览

c++ - 如何在运行时从第三方库 dll 中加载和使用类

我有一些 dll(即来自 Qt 框架的 dll),我想在运行时加载和使用它。我知道如何加载它 -LoadLibrary我得到了这个 dll 的句柄。但接下来呢?比方说,我想使用QString这个库中的一个类 - 我怎样才能导出它?有可能吗?

0 投票
1 回答
218 浏览

c++ - 获取从 DLL 导入的对象的名称

我有一个指向使用 GetProcAddress 从 DLL 加载的某个对象的指针:

我无法修改上面的代码,但我需要"SomeUnknownName"在它超出范围后获取字符串。我只能访问pSomeClass指针。有什么方便的方法可以从指针中获取导入对象的名称吗?现在我只是从 DLL 中转储所有导出名称,然后使用GetProcAddress()它们中的每一个来获取指向所有导出对象/函数的所有指针,然后与pSomeClass这些指针进行比较,但对于解决方案来说似乎很慢。

0 投票
2 回答
1331 浏览

c++ - GetProcAddress 用于将修饰的 C++ 函数导入 C++

在 Visual C++ 2013 中,我试图从“插件”项目中导出一个函数:

它被编译成一个动态 dll,它将在运行时由一个“应用程序”项目链接。首先我定义函数指针类型:

用作:

但是,GetProcAddress返回 NULL。

我可以确认我可以导出 C 函数(使用extern "C")并使用从同一个 DLL 导入它们GetProcAddress,但是我导入 C++ 函数失败。例如这有效:

然后

所以我的假设是我需要以某种方式考虑为registerFactories. 由于它需要处理 C++ 类型,理想情况下我想在没有export "C".

这是dumpbin.exe看到的:

文件 examplePlugin.dll 的转储

文件类型:DLL

编辑 :

registerFactories不是给的名字GetProcAddress。通过从 bindump 手动复制损坏的名称,例如:

有用!因此,下面的许多答案都与在运行时发现这个损坏的名称有关。