仅从ELF二进制文件中提取我的函数名称
发布时间:2020-12-16 01:51:49 所属栏目:安全 来源:网络整理
导读:我正在编写一个脚本,用于在二进制文件中提取所有函数(由用户编写). 以下shell脚本提取我的函数名称以及以__开头的一些库函数 readelf -s ./a.out | gawk '{ if($4 == "FUNC" $3 != "0" $7 == "13" $8 != "main") { print "b " $NF; //***Updated } }' functi
我正在编写一个脚本,用于在二进制文件中提取所有函数(由用户编写).
以下shell脚本提取我的函数名称以及以__开头的一些库函数 readelf -s ./a.out | gawk ' { if($4 == "FUNC" && $3 != "0" && $7 == "13" && $8 != "main") { print "b " $NF; //***Updated } }' &> function_names; function_names文件的输出: b __libc_csu_fini b PrintDivider b PrintFooter b __libc_csu_init b PrintHeader 我想只提取我的功能.那么如何检查函数名称是否以__开头,否则任何其他替代品也会高度评价. 更新:: 解决方法
如何在目标文件上使用readelf而不是链接的可执行文件呢?然后,库函数没有垃圾邮件.
使用-c标志编译为目标文件而不是立即链接. PS:从可执行文件或目标文件中提取名称的正确工具是nm,而不是readelf.使用nm -P文件拥有您想要的一切. $nm -P tst.o | awk '$2 == "T" {print "b " $1}' b foo b main 编辑:要忽略以下划线开头的主要和符号,请使用 $nm -P a.out | awk '$2 == "T" && $1 !~ /^_/ && $1 != "main" {print "b " $1}' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |