这似乎是一个很奇怪的问题,但是我想知道如何从内存“签名”中在.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/