gpt4 book ai didi

android - 确定 Android 设备是否以编程方式 Root ?

转载 作者:IT老高 更新时间:2023-10-28 21:38:02 30 4
gpt4 key购买 nike

Possible Duplicate:
Determine if running on a rooted device

您如何(以编程方式)确定 Android 设备是否: root 运行您的软件或 ROM 的破解副本。

我的数据库中有一些敏感信息,我想在手机 root 时加密它,也就是用户可以访问数据库。我该如何检测?

最佳答案

生根检测是一场猫捉老鼠的游戏,很难让生根检测在所有情况下都适用于所有设备。

参见 Android Root Beer https://github.com/scottyab/rootbeer用于高级根检测,它还使用 JNI 和编译到 .so native 库中的 native CPP 代码。

如果您需要一些简单和基本的生根检测,请检查以下代码:

  /**
* Checks if the device is rooted.
*
* @return <code>true</code> if the device is rooted, <code>false</code> otherwise.
*/
public static boolean isRooted() {

// get from build info
String buildTags = android.os.Build.TAGS;
if (buildTags != null && buildTags.contains("test-keys")) {
return true;
}

// check if /system/app/Superuser.apk is present
try {
File file = new File("/system/app/Superuser.apk");
if (file.exists()) {
return true;
}
} catch (Exception e1) {
// ignore
}

// try executing commands
return canExecuteCommand("/system/xbin/which su")
|| canExecuteCommand("/system/bin/which su") || canExecuteCommand("which su");
}

// executes a command on the system
private static boolean canExecuteCommand(String command) {
boolean executedSuccesfully;
try {
Runtime.getRuntime().exec(command);
executedSuccesfully = true;
} catch (Exception e) {
executedSuccesfully = false;
}

return executedSuccesfully;
}

可能并不总是正确的。 2014 年在约 10 台设备上进行了测试。

关于android - 确定 Android 设备是否以编程方式 Root ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3424195/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com