Python - 按地址调用Windows DLL中的过程
我想知道在Python中,是否可以通过过程地址而不是名称来调用DLL中的一个例程,如果可以的话,怎么做。
举个例子:我正在分析一个恶意的DLL,其中一个我想调用的例程没有导出(也就是没有名称可以引用),不过我知道这个例程的起始地址。
在C/C++中,可以通过将函数指针转换为一个定义好的函数原型来实现这个功能。
在Python中有没有类似的方法呢?
如果没有,修改DLL的导出表,让一个已知的导出名称映射到这个地址,这样做是否会有问题?
2 个回答
0
我也在寻找在Python中通过地址获取函数的方法。虽然我还不知道具体怎么做,但我找到了一种替代的方法,可以通过函数的序号来获取没有名字的函数,具体可以参考这个链接:https://docs.python.org/2/library/ctypes.html,像这样:
dll = CDLL("mydll.dll")
myfunc = dll[32] # the 32-th function
0
我成功地修改了导出表,把一个已经导出的程序的基本地址换成了我自己的程序地址。
这样,我就可以通过Python使用这个导出的名字来执行我感兴趣的子程序了。