首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ptrace mprotect调试故障

Ptrace mprotect调试故障
EN

Stack Overflow用户
提问于 2011-10-14 21:34:36
回答 1查看 624关注 0票数 1

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

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

我现在的问题是,在这个设置中,目标(相当)在库函数调用中随机崩溃(无论我是使用动态链接还是静态链接)。崩溃我的意思是,它要么试图访问由于某种原因而没有映射的内存,要么就一直挂在函数__lll_lock_wait_private中(这是在一个malloc调用之后)。

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

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

那么,你有任何线索,这可能是什么原因?请告诉我你的建议,即使你不确定,我在这里没有想法了…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-14 22:16:12

这种不确定性也可能是由地址空间随机化造成的。您可能希望禁用该选项,以尝试使问题更具确定性。

编辑:

考虑到关闭ASR可以“修复”问题,那么潜在的问题可能是:

  1. 认为0是无效的,而它应该是有效的,或者visaversa。(我有什么)。
  2. 使用来自一次运行的地址与另一次运行的地址?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7768403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档