gpt4 book ai didi

c - 如何从 ELF 和 PE 文件中找到所有 "user defined functions"?

转载 作者:太空狗 更新时间:2023-10-29 15:40:49 25 4
gpt4 key购买 nike

测试平台在 32 位 Linux 和 Windows 上。

我正在尝试识别所有用户定义的函数到动态链接二进制文件,

提取它们的指令并再次将它们组装成二进制。

ELF文件我是这样用的

nm binary | grep "T"

提取某些函数,我认为所有不以_开头的函数都应该是用户定义的函数。

它适用于小程序...

但是当我测试 coreutils (8.5) 时,例如像 ba​​sename

这是 nm 的部分输出

0804b530 T rpl_fflush
0804b590 T rpl_fseeko
0804a400 T set_char_quoting
0804a480 T set_custom_quoting
08049580 T set_program_name
0804a460 T set_quoting_flags
0804a3e0 T set_quoting_style
08049480 T strip_trailing_slashes
08048f70 T usage
0804b0f0 T version_etc
0804b6c0 T atexit

basename的源码中,只定义了三个函数为

main
usage
remove_suffix

但是我在这里使用 nm 找到了很多函数...

基本上我认为像version_etc *atexit* 这样的函数是在头文件中定义的包含基本名称

所以我的问题是:

如何从一个ELF文件中准确的找到所有用户定义的函数?

也欢迎任何关于 PE 文件的答案!

谢谢!

最佳答案

Basically I think these functions like version_etc atexit are defined in the header files basename included

您关于如何构建 basename 的心智模型似乎完全不正确。

basename 是从 basename.o 一大堆其他对象(它们是 coreutils) 从其他库中提取的更多对象。

一旦 basename 被链接,就无法判断哪些函数来自哪里。

此外,“用户定义函数”到底是什么意思?

关于c - 如何从 ELF 和 PE 文件中找到所有 "user defined functions"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21512241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com