“strace -p pid”给出“attach:ptrace(PTRACE_ATTACH,...):不允许操作”

问题描述 投票:1回答:2

我编写了一个android应用程序来监视正在运行的进程的系统调用,但我得到的只是“不允许操作”。我试图禁用SElinux并使用“chmod 4777 strace”启用root访问权限,然后选择“root:root strace”,但我仍然无法解决问题。该应用程序在模拟器4.3(API 18)上运行。

android strace
2个回答
1
投票

进程可以禁用跟踪,即使是root用户也无法连接。

如果目标进程无法从strace接收信号,则可以触发EPERM(如果以root身份运行成功,这被排除在外,虽然我不确定strace实际上是否处理好了),目标进程本身就是setuid(它们禁用了跟踪),以及过程本身是否简单地禁用了跟踪。此外,最多一个调试器可以跟踪一个进程。

不能转储的进程不能通过strace附加。进程可以将自身设置为不可转储,并且它也会在UID更改时自动发生(由于setuid位或setuid系统调用)


1
投票

在某些情况下,在Android上执行strace失败并显示“ptrace(PTRACE_ATTACH,...):操作不被允许”因为strace已在Android中运行

$ adb shell su -c ps | grep strace root 15861 1 1056 4 do_wait 00000452cc S.

一旦旧的运行strace进程被终止,新的调用可能会成功:

$ adb shell su -c pkill strace

© www.soinside.com 2019 - 2024. All rights reserved.