我想编写一个elf解析器并反汇编.text部分,所以我解析了elf文件,并将.text节交给了顶点,以便为我反汇编。不幸的是,capstone不能解析函数名称。
根据我的elf文件中的以下汇编代码,有一个我要解析其名称的函数的调用。
call 8048380
我检查了.symtab节,但需要重定位的函数(如printf)在表中的地址为0,因为直到加载时它们的地址都是未知的。
那我该如何解析它的名字?
答案 0 :(得分:0)
我检查了.symtab节,但是需要重定位的函数(例如printf)
您感兴趣的功能(地址为0x8048380
的功能)不是{em> ,而不是printf
,并且不需要要求运行时重定位。
不清楚您的问题如何是如何获得此反汇编的。
call 8048380
您可能需要使用更好的工具,或者您将工具指向剥离的二进制文件(不要执行那个)。
以下是合理输出应如下所示的示例:
int foo() { return 42; }
int main() { return foo(); }
$ gcc t.c
$ gdb -q ./a.out
(gdb) disas main
Dump of assembler code for function main:
0x08048410 <+0>: push %ebp
0x08048411 <+1>: mov %esp,%ebp
0x08048413 <+3>: call 0x8048406 <foo> // GDB resolves the address
0x08048418 <+8>: pop %ebp
0x08048419 <+9>: ret
End of assembler dump.