[英]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。
如果你想使用android studio提供的模拟器,那么我认为你必须使用android studio创建一个带有API 22(LOLLIPOP)或更高版本的新的Android模拟器,并尝试在Kingroot app的帮助下生成它。 此应用程序可帮助您通过直接在设备上安装(如普通应用程序)来设备。 此解决方案必须正常,因为它适用于普通的真实设备。 我自己试过真正的设备,但不是在Android模拟器上。
希望这能解决您的疑问
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.