gpt4 book ai didi

debugging - 调试器 : Soft breakpoint

转载 作者:行者123 更新时间:2023-12-03 20:15:49 26 4
gpt4 key购买 nike

我目前正在研究调试器。我读到调试器有软件断点(apparently 这些是最常用的断点)。这些通过将操作码的第一个字节替换为 Int 3(操作码 0xcc)来工作。

我已经读过程序的文本(/code)段是只读的(如果这个段不需要只读的话,就是停止代码修改自己的指令,自我修改代码)。我的问题是调试器如何修改只读指令。我在这里错过了什么吗。对此的任何评论或对此理论的指针表示赞赏。

谢谢。

最佳答案

在 Windows 桌面和服务器平台上,可以使用 kernel32.dll 导出的 VirtualProtect 函数更改内存页面保护。因此,例如,如果调试器想要在某个地址写入 0xcc,但该地址位于标记为只读的页面中,则调试器可以将该页面的保护设置为读写(假设它具有足够的权限),然后写入值(value)。

这样做的一个副作用是它会导致该内存页面的写时复制 (COW) 错误,现在被调试进程将拥有它自己的页面物理副本。这可以防止在共享该物理页面的所有进程中设置断点。

关于debugging - 调试器 : Soft breakpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13747156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com