繁体   English   中英

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

[英]How to test If Android apk runs in rooted device

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

提前致谢!

我编写了一些util函数来帮助我确定我的应用程序是否在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 PC。

rootable模拟器的链接

如果你想使用android studio提供的模拟器,那么我认为你必须使用android studio创建一个带有API 22(LOLLIPOP)或更高版本的新的Android模拟器,并尝试在Kingroot app的帮助下生成它。 此应用程序可帮助您通过直接在设备上安装(如普通应用程序)来设备。 此解决方案必须正常,因为它适用于普通的真实设备。 我自己试过真正的设备,但不是在Android模拟器上。

希望这能解决您的疑问

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM