确定 Android 设备是否以编程方式 root? [复制]

2023-11-29

可能的重复:
确定是否在已取得 root 权限的设备上运行

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

我的数据库中有一些敏感信息,我想在手机 root 后(即用户可以访问数据库)对其进行加密。我如何检测到这一点?


Root 检测是一场猫捉老鼠的游戏,很难使 Root 检测适用于所有情况下的所有设备。

See Android 根汁汽水 https://github.com/scottyab/rootbeer用于高级根检测,它还使用编译到 .so 本机库中的 JNI 和本机 CPP 代码。

如果你需要一些简单和基本root检测检查下面的代码:

  /**
   * 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 台设备上进行了测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确定 Android 设备是否以编程方式 root? [复制] 的相关文章

  • 如何用Android做交互动画(翻译)

    我在 Android 中有一些 png 序列 我需要将它们的 x 和 y 位置从屏幕顶部到底部的翻译动画化 当动画发生时 我需要对象来接收单击事件 我知道这在 3 0 之前的 Android 版本中效果不太好 因为display对象的位置与
  • 如何在Android上获取当前播放曲目的路径[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想编写一个应用程序将当前播放的音乐流式传输到另一台设备 两个设备之间的连接确实有效 我还可以通过 wifi 传输一些字符串 但在获取
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • 如何使用具有三种布局的视图翻转器?

    我目前正在使用ViewFlipper我的主要活动有两种不同的布局 我想使用第三种布局 但我只能找到showNext and showPrevious 命令 有人可以告诉我如何使用来实现第三种布局吗ViewFlipper 为您制作了一个示例
  • 突出显示列表视图项目

    我需要在触摸列表视图项目时突出显示它并保持突出显示状态 我尝试了我发现的一切 但没有任何效果 这是我的代码 这是列表视图
  • 将项目添加到 android 框架的设置中

    我正在 android 框架中工作 我想向 android 操作系统中的现有设置添加一个项目 您能告诉我如何执行此操作吗 首先阅读有关偏好活动 http developer android com reference android pre
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • Android 音乐播放器应用程序:如何为服务中运行的媒体播放器设置完整的侦听器?

    我正在编写一个音乐播放器应用程序 我在服务中有 MediaPlayer 对象 问题是 我不知道如何从服务更新用户界面 例如 我想更新当前歌曲的剩余时间 但是 因为 MediaPlayer 正在服务 我无法设置 MediaPlayer 对象的
  • Android 游戏偶尔出现延迟

    我正在用 Java 制作一个简单的 Android 游戏 我注意到每 20 40 秒就会出现一些烦人的延迟 首先 我认为它们是由垃圾收集器引起的 但当我检查 LogCat 时 我发现游戏滞后时没有垃圾收集 每当游戏开始滞后时 我都会标记日志
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • 片段活动中的 commitAllowingStateLoss()

    我的应用程序使用片段活动 它仅处于纵向模式 无法旋转屏幕 最初我使用的是commit 方法 但现在我计划不加区别地将这些更改为commitAllowingStateLoss 对于碎片活动 是否有任何理由不不加区别地执行此操作而不重新评估我使
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • foo.setVisibility(View.GONE) 和parent.removeView(foo) 之间的区别

    如果 foo 是一个视图 那么有什么区别foo setVisibility View GONE and fooParent removeView foo 我对两个语句之前和之后视图的内存消耗特别感兴趣 可见性设置为 GONE 的视图是否会消
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • 如何获取Android中的所有主屏幕?

    我是安卓开发新手 我知道每个主屏幕都是启动器中的一个工作区 我想获取屏幕上所有应用程序图标的所有位置信息 那么有没有办法获取这些屏幕对象及其图标信息的列表 ADD 我更期待的是应用程序图标和屏幕之间的关系 例如 我想要某个应用程序图标的位置
  • 带有工具提示的搜索栏 android

    Hi All 我正在尝试使用工具提示自定义 android 搜索栏 如给定的图像 有没有办法在搜索栏中添加带有拇指的文本视图 或任何其他想法 Thanks 我们可以通过拇指的界限来做到这一点 并在seekbar的progressChange
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 如何从另一个活动更新 Recyclerview 数据

    我有两个活动 MainActivity 和 Addlogactivity 我正在更新 Addlogactivity 中的数据 该数据应显示在 mainactivity recyclerview 中 数据未在数据库中更新 MianActivi
  • Retrofit 2.0:预期为 BEGIN_OBJECT,但在第 1 行第 1 列路径 $ [重复] 处为 STRING

    这个问题在这里已经有答案了 我在邮递员上传递了更新用户请求并获得了成功的响应 参见图片 现在当我尝试使用 Retrofit 2 在我的应用程序中执行相同操作时 出现错误 com google gson JsonSyntaxException

随机推荐

  • Nginx - 使用/子文件夹重定向反向代理 Ghost 博客

    我有一个正在运行的 nginx 实例 其规则如下 但我很难将所有请求指向domain com ghost 我尝试修改location 阻止到location ghost 但没有成功 我刚刚从 Ghost 应用程序中收到 404 错误 有什么
  • IOS:无需 iphone/ipad 邮件应用程序即可发送邮件

    我想创建一个有 5 个文本字段和一个 textView 的应用程序 1 Name 2 Surname 3 Telephone 4 your email user email not address email receiver 5 city
  • jQuery 获取带有 id 的单击单元格的表头名称

    我有一个表 在该表中我有值id edit 现在 我想要的是当我单击任何单元格时获取相应列的标题名称 到目前为止 根据之前提出的问题 我得到的是 body on click td edit function var th this close
  • Javascript 正则表达式只允许正数

    我用它来测试数字 d 但我需要确保它大于零 同时仍然允许 0000123123123 例如 你可以写 d 1 9 d 零个或多个数字 后跟一个非零数字 再后跟零个或多个数字
  • 按比例调整图像大小

    我想将上传的图像调整为宽度 180px 高度成比例 有没有任何课程可以做到这一点 感谢帮助 我认为这个问题可以用实际的代码示例来回答 下面的代码向您展示了如何调整目录中图像的大小uploaded 并将调整大小的图像保存在文件夹中resize
  • iphone 平铺图像

    我有一个 1280 x 1664 的图像 我想使用 Apple 提供的 ScrollViewSuite 示例 但我需要将此图像剪切到多个缩放级别 那么 有人知道如何在多个缩放级别上平铺图像吗 一定有一种简单的方法可以将图像填充到 256x2
  • 处理交易时虚拟机异常:气体耗尽

    我正在使用 testrpc web3 1 0 和 Solidity 构建一个简单的 Dapp 但我总是收到此错误 并且找不到问题所在 请帮忙 我的 JavaScript 文件 const Web3 require web3 const fs
  • 如何在 Kotlin Desktop Compose 中触发 PC 键盘输入

    我将使用 Kotlin Jetpack Compose 开发一个 POS 系统 我想知道如何在我的项目中触发键盘输入事件 在 Compose Desktop 中 您可以使用以下方式侦听关键事件onKeyEvent Window范围 Wind
  • Discord Bot + Google Cloud Run:“容器无法启动。”

    我正在尝试部署一个用 python 编写并通过 Docker 容器化到 Google Cloud Run 的简单 Discord 机器人 Dockerfile 非常简单 FROM python 3 9 WORKDIR app COPY re
  • 有没有简单的 3 列、纯 CSS 布局?

    不需要以下内容的一种 对图像的依赖 即 假柱 专门为 IE 添加的某种怪异或 hack 要求 IE 以怪异模式运行 没有像三个 DIV 之一与其他 DIV 重叠那样的奇怪现象 即 圣杯 边距设置为高负数 使它们远离视图屏幕 再次 圣杯 布局
  • ember.js #每个按属性排序

    我有一个数组Ember Object由 Handlebars 显示的 s each 我希望每次数组更改时都按这些对象的属性进行排序 所以像这样 var arr Ember Objects create position 0 label fo
  • EF 上的数据库连接错误

    我对实体框架非常陌生 我在编写基于 Web api 的网站 连接到 mssql 时遇到问题 我不断收到看似随机的错误 大部分似乎与数据库相关 这些错误最常在网站首次发布时发生 但有时也会在距上次发布数小时后发生 错误的选择 无效操作 连接已
  • 如何使用警报管理器重复我的服务?

    我做了一个基于位置的应用程序 现在我需要每 30 分钟运行一次定位服务 为此 我尝试使用警报管理器 但它只运行我的服务一次 我需要它每 30 分钟运行一次吗 My code gps back process java public clas
  • C# 转换整个数组?

    我看到这个Array ConvertAll方法 但是需要一个Converter作为一个论点 当我已经在类中定义了一个隐式转换器时 我不明白为什么需要一个转换器 public static implicit operator Vec2 Poi
  • C++:如何添加外部库

    我正在尝试将 SVL 添加到我的项目中 如果没有它 我会收到数百个错误 未定义的参考 添加 lSVL 后 所有错误都消失了 但 gcc 说 找不到 lSVL 其他一切 SDL SDL TTF SDL Mixer 都工作正常 您应该告知 gc
  • JQuery UI Draggable如何获取拖动开始位置

    我可以拖动我的可拖动项目并将它们放在我的可放置物品上 并从中获取放置位置 ui absolutePosition 发生在放置事件上 我需要知道拖动从哪个位置开始 我尝试在拖动开始事件上获取 ui position 但这是空的 我也尝试过 拖
  • 在 Google Apps 脚本中创建动态下拉列表[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想使用 Google Apps 脚本动态更改 Google 电子表格的单元格验证功能中候选列表的值 我需要从其他电子表格中获取值 如果我理解正确的话 这是我一直在努力解决的问题
  • Visual Studio代码nodejs请求“启动”:无法启动目标(原因:生成节点ENOENT)

    当我使用 Visual Studio 代码调试 NodeJS 应用程序时 视觉工作室代码告诉我request launch cannot launch target reason spawn node ENOENT 我的nodejs版本是4
  • 使用循环 onclick 更改背景颜色

    这是我的 js 小提琴 http jsfiddle net pYM38 16 var box document getElementById box var colors purple yellow orange brown black b
  • 确定 Android 设备是否以编程方式 root? [复制]

    这个问题在这里已经有答案了 可能的重复 确定是否在已取得 root 权限的设备上运行 如何 以编程方式 确定 Android 设备是否 已 root 运行软件或 ROM 的破解副本 我的数据库中有一些敏感信息 我想在手机 root 后 即用