是否可以在python中调用RAW函数指针?
例如:
ctypes.windll.kernel32.GetModuleHandleA(None)
将调用API,Python解析DLL + Function指针使其工作。但是如果我有一个原始函数指针,例如0xDEADBEEF(对应于函数头),我该如何创建一个传递这个原始指针的函数实例?
我不能只导出函数,因为它位于已编译的可执行文件中,但我希望能够做到这样的事情:
为了说清楚......在C ++中我可以用这样的东西调用RAW函数:
#define myfunction ((void(*)(int a, int b, int c)) 0x00402383)
myfunction(1, 2, 3);
我是python我想做类似的东西,也许使用ctypes库? 我已经深入了解库,但我找不到它们如何初始化函数实例。
注意:
答案 0 :(得分:1)
如果函数位于已编译的可执行文件中,则不能在C ++中,因为您将获得访问冲突。您无法从其他进程调用函数。
如果您具有C ++知识,则创建DLL并将其注入可执行文件。你可以打电话给它。
由于您已经将DLL注入目标进程,因此似乎可以使用ctypes实现您想要的功能。
>>> functype = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_int, ctypes.c_int)
>>> func = functype(raw_address)
>>> func
<CFunctionType object at 0x1006816d0>