在 ELF 二进制文件中查找所有函数定义的方法

4
假设我有一个名为 xxx.so 的库。我可以使用以下命令获取所有函数名称和参数:
readelf -Ws xxx.so  |c++filt 

它将输出以下内容:
  711: 00270209    40 FUNC    GLOBAL DEFAULT    8 debug_c_tree
  7712: 00270231   128 FUNC    GLOBAL DEFAULT    8 pp_c_tree_decl_identifier
  7713: 00270723    90 FUNC    GLOBAL DEFAULT    8 pp_c_init_declarator
  7714: 002f546c     0 NOTYPE  GLOBAL DEFAULT  ABS _edata
  7715: 002f546c     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
  7716: 002fc9e1     0 NOTYPE  GLOBAL DEFAULT  ABS _end

但是,我该如何轻松地在elf二进制文件中转储以下所有函数体内容呢?
debug_c_tree() 
{
  mov eax, edx;
  ....
  ....
}

....

你的问题非常不清楚:在我所能想到的任何上下文中,如果能够轻松地在ELF文件中找到函数名和参数,则找到函数体会更加容易。 - Employed Russian
@EmployedRussian,我已经更新了我的问题。 - Jack Chin
你用 c++filt 并不会取得参数,而是获取参数的 类型。对于 C 函数,则什么都 没有 获取到。 - Employed Russian
2个回答

4
如何轻松地转储所有函数体
objdump -d xxx.so

1
objdump -D -z ELFfileName

这将反汇编整个文件,包括所有部分和函数之间的空格。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接