是否可以实现nm -D
或readelf -s
使用 python ctypes?
我想列出.so
文件的所有动态符号。
提前致谢!
是否可以实现nm -D
或readelf -s
使用 python ctypes?
我想列出.so
文件的所有动态符号。
提前致谢!
我的回答是:不,它极不可能ctypes
为您提供库中所有可用符号的枚举。
原因主要在于ctypes
作为 Python 模块的范围,以及动态库 API 的范围:POSIX dlopen
+dlsym
或 Win32 LoadLibrary
+ GetProcAddress
。这些 API 的主要任务是加载 DLL 并通过符号名称/序号获取可调用地址。它们不是为符号枚举而设计的。您不能使用它们列出符号;当然, CPython依赖它们来实现其功能。
还需要说明的是,您提到的工具nm
和工具自己解析可执行文件以获取符号列表。这与将库作为可执行模块加载到内存中非常相切。因此,您将需要一个不同的 Python 模块来执行此操作,例如。readelf
python-elf