这似乎是一个很奇怪的问题,但是我想知道如何从内存“签名”中在.dll中运行一个函数。我对它的实际工作方式了解不多,但我非常需要它。如果您知道内存签名及其地址,则它是一种从.dll内部运行未导出函数的方法。
例如,我有这些:

respawn_f "_ZN9CCSPlayer12RoundRespawnEv"
respawn_sig "568BF18B06FF90B80400008B86E80D00"
respawn_mask "xxxxx?xxx??xxxx?"

使用一些漂亮的C++代码,您可以使用它从.dll中运行函数。

这是一篇讲得很好的文章:
http://wiki.alliedmods.net/Signature_Scanning

那么,是否有可能使用Ctypes或任何其他方式在python内部执行此操作?

最佳答案

如果您已经可以使用C++运行它们,则可以尝试使用SWIG为您编写的C++代码生成python包装器,使其可以从python调用。

http://www.swig.org/

使用SWIG发现的一些警告:

Swig根据字符串值查找类型。例如
Python(int)中的整数类型将确保
cpp类型为“int”,否则swig会提示
有关类型不匹配的信息。没有自动转换。

Swig逐字复制源代码,因此即使是同一 namespace 中的对象也是如此
需要完全合格,以便cxx文件可以正确编译。

希望能有所帮助。

关于python - 使用python运行未导出的.dll函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/421223/

10-12 22:12
查看更多