我一直在寻找一种方法,使用ctypes包装器在python程序上加载的C共享对象上列出.text节定义的符号。换句话说,我试图在CDLL加载的对象上获得已定义函数的列表。
如果无法使用ctypes或库(或python绑定)执行此操作,则另一个选项是python elf解析库或类似http://halflifelibrary.com/wiki/Metamod-P的解决方案。
有什么办法吗?
答案 0 :(得分:1)
添加到您尝试使用的方法列表中,以获取由dll导出的函数列表。
脚本位于:http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport,它转储dll的符号表,解析它以获取公共表并将表输出到.def文件中。它还说如果dll被剥离,这可能不起作用。
我不确定Python中是否有好的ELF解析器。添加我发现的一些。
答案 1 :(得分:0)
仅供参考,无法在使用ctypes加载的共享对象上获取已定义方法的列表,因为对象结构中没有元信息。
如果您需要特定于平台的对象解析器,您可以使用objdump例程查看http://projects.scipy.org/numpy/wiki/MicrosoftToolchainSupport以获取文本部分中定义的函数引用。
我的选择是使用ELF解析器库(如Hachoir或Pydevtools)编写一个小解析器,以便内省对象。