我有以下情况,我想监控Android手机上的系统调用 我做了一个脚本来做到这一点。使用Android Emulator可以很好地工作(将应用程序的痕迹写在我的Ubuntu上的特定文件中)。 问题是,当我附加一个真正的手机进行分析时,它会在结果文件中显示以下内容:
ptrace attach failed: Operation not permitted
我正在使用此代码来获取它,但我不明白为什么它可以在模拟器上运行而不是在root实际设备中运行。
这是我在perl中使用的命令:
system("$dirTools/adb -s $Device shell strace -p $PID[1]>$dirRecordDataSet/$Date/$appName &");
有什么建议吗?提前致谢
答案 0 :(得分:1)
Maye是adb守护程序以有限的权限运行。您可以尝试使用setuid roo安装strace。以下是有关它的手册页建议:
Setuid安装
如果将strace安装到root用户 然后调用用户将能够 附加和跟踪所拥有的进程 任何用户。另外还有setuid和 setgid程序将被执行 跟踪正确有效 特权。由于只有用户信任 具有完全root权限应该是 只允许做这些事情 将strace安装为有意义 setuid为root用户谁可以 执行它仅限于那些 拥有这种信任的用户。对于 例如,安装一个有意义 特殊版本的strace with mode 'rwsr-xr--',用户root和组 跟踪,跟踪成员的位置 组是可信用户。如果你使用 这个功能,请记住 安装一个非setuid版本的strace 供普通的lusers使用。
答案 1 :(得分:1)
您可以按照this question的回答将APK文件安装到Android emulator
。安装后,
转到Eclipse,从Windows打开DDMS
视图=>开放视角。
转到File Browser
标签,点击任意文件夹,然后点击“将文件推送到设备”。您可以在此处上传任何空的trace.txt文件。我建议你把你的文件放在sdcard文件夹中。
转到上面链接中给出的CMD。输入adb shell
。输入cd sdcard
即可转到SD卡。
现在在命令行中键入ps
,并通过其包名找出您的APK文件的PID。
现在输入strace -p <pid> -o trace.txt
。所有系统调用都将放在此文件中。如果您想完成对APK的支持,可以将此trace.txt文件下载到您的计算机并查看跟踪。