【发布时间】:2021-11-01 08:00:10
【问题描述】:
我正在尝试从带有 调试符号的 ELF 中提取原始源代码。
$ sed -n "14,16p" main.c
for (int p=start;p<end;p++)
if (isPrime(p))
printf("%d\n",p);
我想要来自给定地址的“最接近的”源代码行:
$ gcc -g -O0 main.c -o main
$ objdump -D -S main > main.asm
$ sed -n "451,457p" main.asm
if (isPrime(p))
6ba: 8b 45 f4 mov -0xc(%rbp),%eax
6bd: 89 c7 mov %eax,%edi
6bf: e8 86 ff ff ff callq 64a <isPrime>
6c4: 85 c0 test %eax,%eax
6c6: 74 16 je 6de <main+0x49>
printf("%d\n",p);
所以给定0x6bf调用指令,我想提取if (isPrime(p))。
这似乎是可能的,因为 objdump 可以做到(对吗?)
【问题讨论】:
标签: elf debug-symbols objdump