我写了一个android应用程序来监控正在运行的进程的系统调用,但我得到的结果都是“不允许操作”。我尝试使用"chmod 4777strace“和chown的”SElinux : root strace“来禁用root并在strace上启用root访问,但我仍然无法解决这个问题。该应用程序在仿真器4.3 (API 18)上运行。
发布于 2016-07-01 04:42:42
进程可以禁用跟踪,并且没有方法可以附加,即使是以root身份。
如果目标进程无法接收到来自strace的信号(如果以root身份运行成功,则不会触发EPERM,尽管我不确定strace是否真的能很好地处理问题),目标进程本身是setuid (它们禁用跟踪),如果跟踪只是被进程本身禁用了,则会触发EPERM。此外,一个进程最多可以由一个调试器跟踪。
不可转储的进程不能通过strace附加到。进程可以将自身设置为不可转储,也可以在UID更改时自动发生(由于setuid位或setuid系统调用)
发布于 2017-12-20 22:52:12
在某些情况下,在Android上执行strace会失败,并显示"ptrace(PTRACE_ATTACH,...):Operation not permitted“,因为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
https://stackoverflow.com/questions/37991989
复制相似问题