【问题标题】:How do I make the text section writeable in GDB?如何使文本部分在 GDB 中可写?
【发布时间】:2017-07-11 18:37:17
【问题描述】:

我在 GDB 中运行一个精灵,并希望将执行代码写入文本部分。我可以从 shell 中做到这一点:

set {int}[text_address] = 0x8008face

但是执行一条写入这个地址的指令会爆炸。

我宁愿不修改精灵,而是动态设置地址范围为 rwx。

编辑:我应该提一下,这是模拟运行,而不是本地运行。

【问题讨论】:

  • 您是否尝试从 GDB 调用 mprotect 以使页面可写?
  • 添加了一个编辑,可能应该提到这是模拟的,因为它不是 x86。我调用了 mprotect 等效项,但它没有使文本可写。谢谢,这可能会在本地工作。
  • 您可能需要告诉模拟器将代码放入 RAM 而不是 ROM。

标签: gdb elf


【解决方案1】:

使用 --write 标志调用 GDB。

Documentation 说:“打开可执行文件和核心文件以进行读写。这相当于 GDB 中的 'set write on' 命令(请参阅修补程序)。”但我不相信它们实际上是等价的。

有关示例,另请参阅 this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多