【问题标题】:Translate Instruction Pointer Address (in shared library) to Source Instruction将指令指针地址(在共享库中)转换为源指令
【发布时间】:2019-03-17 12:16:26
【问题描述】:

是否有任何工具或库可以在 Linux 上使用,仅从 PID 和当前指令指针地址获取原始(源)指令,即使 IP 当前指向共享库?

AFAIK 这应该是可能的,因为库映射的位置可通过/proc/[PID]/maps 获得,尽管我还没有找到任何这样做的应用程序或示例。

有什么建议吗?

编辑:汇编指令或最近的符号就足够了(不一定需要源代码行)

【问题讨论】:

标签: c linux pointers ip instructions


【解决方案1】:

我找到了一种使用 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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多