gpt4 book ai didi

c - ptrace mprotect调试麻烦

转载 作者:太空宇宙 更新时间:2023-11-04 04:04:34 26 4
gpt4 key购买 nike

我在研究项目上遇到了问题。我正在尝试的是使用 ptrace 来观察目标进程的执行。在 ptrace 的帮助下,我将 mprotect 系统调用注入(inject)目标代码段(类似于断点)并将堆栈保护设置为 PROT_NONE。之后我恢复原始指令并让目标继续。当我得到一个无效的许可段错误时,我再次注入(inject)系统调用以再次取消对堆栈的保护,然后我执行导致段错误的指令并再次保护堆栈。

(这确实适用于简单的程序。)

我现在的问题是,通过此设置,目标(漂亮)在库函数调用中随机崩溃(无论我使用动态链接还是静态链接)。我的意思是崩溃,它要么尝试访问由于某种原因未映射的内存,要么它一直卡在函数 __lll_lock_wait_private 中(在 malloc 调用之后)。

让我再次强调,崩溃并不总是发生,也不总是发生在相同的位置。

这听起来像是一个同步问题,但据我所知(意思是我查看了/proc/pid/tasks/),只有一个线程在运行。

那么你知道这可能是什么原因吗?请告诉我你的建议,即使你不确定,我在这里没有想法......

最佳答案

地址空间随机化也可能造成不确定性。您可能希望禁用它以尝试使问题更具确定性。

编辑:

鉴于关闭 ASR“修复”了问题,那么潜在的问题可能是:

  1. 某处认为 0 在应该有效时无效,反之亦然。 (我所拥有的)。
  2. 将一次运行的地址用于另一次运行?

关于c - ptrace mprotect调试麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7768403/

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