【发布时间】:2017-07-11 18:37:17
【问题描述】:
我在 GDB 中运行一个精灵,并希望将执行代码写入文本部分。我可以从 shell 中做到这一点:
set {int}[text_address] = 0x8008face
但是执行一条写入这个地址的指令会爆炸。
我宁愿不修改精灵,而是动态设置地址范围为 rwx。
编辑:我应该提一下,这是模拟运行,而不是本地运行。
【问题讨论】:
-
您是否尝试从 GDB 调用
mprotect以使页面可写? -
添加了一个编辑,可能应该提到这是模拟的,因为它不是 x86。我调用了 mprotect 等效项,但它没有使文本可写。谢谢,这可能会在本地工作。
-
您可能需要告诉模拟器将代码放入 RAM 而不是 ROM。