一个 Infosec 团队想知道我们的应用程序是否可以在 root 的 Android 设备上执行。我们为此开发了一个解决方案,现在想要测试我们的应用程序。我们能够在线复制有根设备吗?如果没有,谁能提供其他方法来测试我们的应用程序?
提前致谢!
一个 Infosec 团队想知道我们的应用程序是否可以在 root 的 Android 设备上执行。我们为此开发了一个解决方案,现在想要测试我们的应用程序。我们能够在线复制有根设备吗?如果没有,谁能提供其他方法来测试我们的应用程序?
提前致谢!
我编写了一些实用函数来帮助我确定我的应用程序是否在根环境中运行:
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 模拟器。这里有几个安卓模拟器可以下载到windows pc上。
如果您想使用 android studio 提供的模拟器,那么我认为您必须使用 android studio 创建一个具有 API 22 (LOLLIPOP) 或更高版本的新 android 模拟器,并尝试在Kingroot应用程序的帮助下对其进行生根。这个应用程序可以帮助您通过像普通应用程序一样直接安装在您的设备上来根植您的设备。该解决方案必须像在普通真实设备上一样工作。我自己在真实设备上试过,但没有在安卓模拟器上试过。
希望这能解决您的疑问