有没有什么工具或库可以在Linux上使用,以便仅从PID和当前指令指针地址获取原始(源)指令,即使IP当前指向共享库?
AFAIK这应该是可能的,因为库映射的位置可以通过/proc/[PID]/maps获得,尽管我还没有找到任何这样做的应用程序或示例。
有什么建议吗?
编辑:汇编指令或最接近的符号就足够了(不一定需要源代码行)

最佳答案

我找到了一种方法来处理GDB:
互动式:
$ gdb --pid 1566 (gdb) info symbol 0x7fe28b8a2b79 pselect + 89 in section .text of /lib/x86_64-linux-gnu/libc.so.6 (gdb) info symbol 0x5612550f14a4 copy_word_list + 20 in section .text of /usr/bin/bash (gdb) info symbol 0x7fe28b878947 execve + 7 in section .text of /lib/x86_64-linux-gnu/libc.so.6
显示了我想要的!
也可以编写脚本:
gdb -q --pid PID --batch -ex 'info symbol HEX_SYMBOL_ADDR'

关于c - 将指令指针地址(在共享库中)转换为源指令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52776584/

10-11 22:06
查看更多