这似乎是一个奇怪的问题,但我想知道如何从内存“签名”运行 .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 调用。
我在使用 SWIG 时发现的一些注意事项:
Swig 根据字符串值查找类型。例如 Python 中的整数类型 (int) 将确保 cpp 类型是“int”,否则 swig 会提示 关于类型不匹配。没有自动转换。
Swig 逐字复制源代码,因此即使是同一命名空间中的对象 将需要完全限定,以便 cxx 文件能够正确编译。
希望对您有所帮助。
关于python - 使用 python 运行未导出的 .dll 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421223/