【发布时间】:2012-02-23 20:21:19
【问题描述】:
我有一个问题可能很容易解决,但我似乎找不到答案。
我正在尝试对 Android 设备上运行的不同进程执行 strace。我通过将 strace 二进制文件复制到 /system/xbin (就像模拟器一样)成功地做到了这一点,并且工作得很好。我的问题是我通过引导加载程序复制了二进制文件,我不希望用户必须通过它。
所以我发现了这个很棒的教程来从应用程序中运行二进制文件:
http://gimite.net/en/index.php?Run%20native%20executable%20in%20Android%20App
我按照教程进行操作:
- 将strace的二进制文件复制到/data/data/com.mypackage
- 将执行权限更改为二进制文件(我也尝试过 777)
-
尝试用
执行它进程进程 = Runtime.getRuntime().exec("/data/data/com.mypackage/strace -p PID -o /sdcard/folder_I_know_it_works");
我知道该命令是正确的,因为当我从 /xbin/system 执行它时,它可以完美运行。当我运行从我的应用程序中复制的那个时,我得到空输出。我只为我自己的进程获得正确的输出,所以我知道这是一个权限问题。
当然,我还没有提到我对我的应用程序拥有 root 权限。我还尝试将 strace 二进制文件的所有者更改为 root:root 和 system:system,什么都没有。
总结一下:我需要在从应用程序复制到手机内存的二进制文件上获得与在 /xbin/strace 上找到的二进制文件相同的权限
我做错了什么?
另一个好的解决方案是找到一种方法,将 strace 从具有 root 权限的应用程序中复制到 /system/xbin。有什么想法吗?
提前非常感谢!
【问题讨论】:
标签: android linux binary execute strace