【问题标题】:Obtain root access via su on the Android emulator在安卓模拟器上通过su获取root权限
【发布时间】:2011-04-16 14:17:28
【问题描述】:

我需要通过 su 获得 root 访问权限以午餐 TcpDump 二进制文件(我正在研究一种 android 嗅探器)。我使用此代码:

try {
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(process.getOutputStream());
    os = new DataOutputStream(process.getOutputStream());
    os.writeBytes("/data/local/tcpdump-arm -c 10 -s 0 -w /data/local/out.txt\n");
    os.writeBytes("exit\n");
    os.flush();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

它在有根手机上完美运行,但我想在模拟器中实现这一点。 默认情况下,您无法通过模拟器上的 su 获得 root 权限(尽管可以通过 adb shell 获得)。

我找到了this 帖子

但这对我不起作用。我在某处读到此技巧不适用于 sdk 的当前版本,但没有说明它适用于哪个版本。 我尝试使用 sdk 修订版 10,avd 运行 Android 2.1。

【问题讨论】:

    标签: android android-emulator


    【解决方案1】:

    好的,我自己解决问题:/

    它适用于 sdk 版本 10 和 avd 2.2。我之前遵循的提示的问题是重新安装步骤。这是对我有用的命令列表(摘自http://forum.xda-developers.com/showthread.php?t=821742):

    adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
    adb push su /system/xbin/su
    adb shell chmod 06755 /system
    adb shell chmod 06755 /system/xbin/su
    adb install superuser.apk
    

    您可以在此处获取 su 二进制文件和超级用户应用程序:http://forum.xda-developers.com/showthread.php?t=682828

    每次启动模拟器时都必须这样做。

    【讨论】:

      【解决方案2】:

      我能够通过删除 /system/app/SdkSetup.apk 让 superuser.apk 在重新启动之间保持不变

      我现在再次检查并重新创建它,但我在重新启动之间仍然有 Superuser.apk。

      我还建议将busybox二进制文件与su一起推送。

      【讨论】:

        【解决方案3】:

        请注意,a.b.d 中的步骤也适用于带有 OS 2.3.3 Gingerbread 的 AVD 模拟器。 我从提供的链接下载了 su-2.3.6.1-signed.zip。

        另外,我创建了一个 .bat 文件,其中包含 a.b.d 提供的用于即时执行的命令。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-05-06
          • 2018-01-05
          • 1970-01-01
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多