是否可以实现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 模块来执行此操作,例如。readelfpython-elf