标题: 查看ELF的导入/导出符号 创建: 2023-07-28 22:10 更新: 2024-04-06 17:14 链接: https://scz.617.cn/unix/202307282210.txt 只是一篇速查手册,实在偷懒,就"nm -D"吧。 不管是导入还是导出符号,都属于ELF动态符号的一部分,与调试符号无关,与是否 strip无关。查看动态符号: -------------------------------------------------------------------------- objdump -CT nm -CD readelf -W --dyn-syms --demangle -------------------------------------------------------------------------- 若已知导入/导出符号名,grep上述命令的输出即可。Windows中可以查看PE的导入表: dumpbin /imports Linux中也有类似操作,查看ELF导入函数: -------------------------------------------------------------------------- objdump -d | grep "@plt>:" objdump -CT | grep " DF" nm -CD | grep " U " readelf -W --dyn-syms --demangle | grep "FUNC GLOBAL DEFAULT UND" -------------------------------------------------------------------------- objdump -d $(which ls) | grep "@plt>:" objdump -CT $(which ls) | grep " DF" nm -CD $(which ls) | grep " U " readelf -W --dyn-syms --demangle $(which ls) | grep "FUNC GLOBAL DEFAULT UND" -------------------------------------------------------------------------- 导入符号大部分是导入函数,还有少部分外部变量。一般我们更关心导入函数,上述 命令正是聚焦于此。但是,其中nm命令比较特殊,无法过滤掉外部变量,相当于导入 函数、外部变量一齐输出了。 Windows中可以查看PE的导出表: dumpbin /exports Linux中也有类似操作,查看ELF导出函数: -------------------------------------------------------------------------- objdump -CT | grep "g DF" nm -CD | grep " T " readelf -W --dyn-syms --demangle | grep -E "FUNC GLOBAL DEFAULT [^UND]{3,3}" 上例未考虑IFUNC机制 -------------------------------------------------------------------------- objdump -CT $(which ls) | grep "g DF" nm -CD $(which ls) | grep " T " readelf -W --dyn-syms --demangle $(which ls) | grep -E "FUNC GLOBAL DEFAULT [^UND]{3,3}" -------------------------------------------------------------------------- 导出符号大部分是导出函数,还有少部分全局变量。一般我们更关心导出函数,上述 命令正是聚焦于此。readelf输出的"FUNC GLOBAL"同时包含导入/导出函数,必须 加强过滤规则。 直观起见,grep的正则表达式未优化,实际使用中可根据自己喜好进行优化,只是没 太大必要。 查看使用IFUNC机制的导出函数: -------------------------------------------------------------------------- objdump -CT | grep "g iD" nm -CD | grep " i " readelf -W --dyn-syms --demangle | grep -E "IFUNC GLOBAL DEFAULT" --------------------------------------------------------------------------