如何测试 Android apk 是否在 root 设备中运行

How to test If Android apk runs in rooted device

Infosec 团队想知道我们的应用程序是否可以在获得 root 权限的 Android 设备上执行。我们为它开发了一个解决方案,现在想测试我们的应用程序。我们可以在线复制 root 设备吗?如果没有,谁能提供其他方法来测试我们的应用程序?

提前致谢!

我编写了一些实用函数来帮助我确定我的应用程序是否在根环境中 运行:

private fun isDeviceRooted(): Boolean {
    return checkRootMethod1() || checkRootMethod2() || checkRootMethod3()
}

private fun checkRootMethod1(): Boolean {
    val buildTags = android.os.Build.TAGS
    return buildTags != null && buildTags.contains("test-keys")
}

private fun checkRootMethod2(): Boolean {
    val paths = arrayOf("/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su", "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su")
    for (path in paths) {
        if (File(path).exists()) return true
    }
    return false
}

private fun checkRootMethod3(): Boolean {
    var process: Process? = null
    return try {
        process = Runtime.getRuntime().exec(arrayOf("/system/xbin/which", "su"))
        val `in` = BufferedReader(InputStreamReader(process!!.inputStream))
        `in`.readLine() != null
    } catch (t: Throwable) {
        false
    } finally {
        process?.destroy()
    }
}

我认为最好的办法是使用 rooted/rootable android 模拟器。这里有一些 android 个模拟器,您可以下载 windows 台电脑。

Links for rootable emulators

如果您想使用 android 工作室提供的模拟器,那么我认为您必须使用 API 22 (LOLLIPOP) 或更高版本创建一个新的 android 模拟器android 工作室并尝试在 Kingroot 应用程序的帮助下对其进行 root。此应用程序通过像普通应用程序一样直接安装在您的设备上来帮助您对设备进行 root。该解决方案必须像在普通真实设备上一样工作。我自己在真实设备上试过,但没有在 android 模拟器上试过。

希望这能解决您的问题