Python - 在Windows DLL中调用过程(按地址,而不是按名称)

时间:2014-07-02 13:24:50

标签: python function dll loadlibrary

我想知道在Python中是否有可能(如果是这样,如何)通过Proc地址而不是名称从DLL调用例程。

一个例子:我正在分析一个恶意的dll,我想要调用的一个例程没有被导出(名称来引用它),但是我确实知道了例程基础的地址。

通过将函数指针强制转换为typedef函数原型,可以在C / C ++中实现。

在Python中有类似的方法吗?

如果没有,是否有任何关于修改dll的导出表的问题,以使已知的导出名称映射到该地址。

2 个答案:

答案 0 :(得分:0)

我能够修改导出表,将已导出例程的基地址更改为我自己的例程。

这允许我通过使用导出的名称来执行我感兴趣的子程序。

答案 1 :(得分:0)

我也在寻找在Python中通过地址获取函数的解决方案。 我仍然不知道如何做到这一点,但我找到了一种替代方法来通过序数(https://docs.python.org/2/library/ctypes.html)来获取未命名的函数,如下所示:

dll = CDLL("mydll.dll")
myfunc = dll[32] # the 32-th function