android 测试机 怎么root,Android 应用安全 - 检测设备是否Root
前言
当用户设备已经被Root之后,在此设备上使用的APP将会有巨大安全隐患,因为Root设备可以获取到最高权限从而有安全风险,特别是会议,金融,银行类APP需要额外注意
1.检测用户是否可以执行以下命令
su
busybox
2.检测用户是否已经安装下列已知的Root安装包
com.noshufou.android.su
com.noshufou.android.su.elite
eu.chainfire.supersu
com.koushikdutta.superuser
com.thirdparty.superuser
com.yellowes.su
3.检测用户是否已经安装下列已知的Root权限控制安装
com.devadvance.rootcloak
com.devadvance.rootcloakplus
de.robv.android.xposed.installer
com.saurik.substrate
com.zachspong.temprootremovejb
com.amphoras.hidemyroot
com.amphoras.hidemyrootadfree
com.formyhm.hiderootPremium
com.formyhm.hideroot
4.检测系统是否为测试版本
Build.TAGS
4.示例代码
private val knownRootPackages = listOf(
"com.noshufou.android.su",
"com.noshufou.android.su.elite",
"eu.chainfire.supersu",
"com.koushikdutta.superuser",
"com.thirdparty.superuser",
"com.yellowes.su"
)
private val knownRootCloakers = listOf(
"com.devadvance.rootcloak",
"com.devadvance.rootcloakplus",
"de.robv.android.xposed.installer",
"com.saurik.substrate",
"com.zachspong.temprootremovejb",
"com.amphoras.hidemyroot",
"com.amphoras.hidemyrootadfree",
"com.formyhm.hiderootPremium",
"com.formyhm.hideroot"
)
fun isRooted(context: Context): Boolean {
return when {
checkTags() || checkRootSu() || checkRootSu1() || canExecuteCommand("su") ||
canExecuteCommand("busybox") || isPackageInstalled(
knownRootPackages,
context
) || isPackageInstalled(knownRootCloakers, context) -> true
else -> false
}
}
private fun checkTags(): Boolean {
val buildTags = Build.TAGS
return buildTags != null && buildTags.contains("test-keys")
}
private fun checkRootSu(): 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 checkRootSu1(): 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()
}
}
private fun canExecuteCommand(command: String): Boolean {
try {
Runtime.getRuntime().exec(command)
return true
} catch (e: Exception) {
return false
}
}
private fun isPackageInstalled(pkgList: List, context: Context): Boolean {
return pkgList.any {
try {
context.packageManager.getPackageInfo(it, 0)
true
} catch (e: Exception) {
false
}
}
}
5.注意
Root检查判断尽量靠前,避免在检查之前就已经被侵入,配合应用加壳技术使用更能达到理想效果
欢迎关注Mike的简书
Android 知识整理
android 测试机 怎么root,Android 应用安全 - 检测设备是否Root相关推荐
- 2015 android测试机,安卓版Android道道通H1A-21AW-K懒人包 2015年最新夏季版 全分辨率...
测试机 器: 华为麦芒B199\安卓4.4.2\1280*720 安装于外置卡 下载地址和安装步骤: 游客,如果您要查看本帖隐藏内容请回复 道道道2015夏季版上市啦,小伙伴们快来看看最新版的道道通地 ...
- android中如何通过代码检测是否有root权限?
2019独角兽企业重金招聘Python工程师标准>>> Android android中如何通过代码检测是否有root权限? while 3 票 1892 评论 (0) • 分享 • ...
- android设备如何root,如何ROOT安卓设备并授权向日葵客户端(电脑端)
大家都知道,向日葵Android客户端想要正常被远控的话,需要具备两个前提条件: 一:手机需获取ROOT权限: 二:允许向日葵客户端获取ROOT权限. 当设备已经ROOT但向日葵未获得ROOT权限时: ...
- android 跳过检查,绕过安卓应用检测项
针对Xposed检测 针对Frida检测 针对ROOT环境检测 const commonPaths = [ "/data/local/bin/su", "/data/lo ...
- Android 玩机指南详细汇总(刷机、root、Xposed等)
点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 目录 Android 系统简介 Android 系统版本 Android API 等级 基 ...
- Android稳定性系列-01-使用 Address Sanitizer检测原生代码中的内存错误
前言 想必大家曾经被各种Native Crash折磨过,本地测试没啥问题,一到线上或者自动化测试就出现各种SIGSEGV.SIGABRT.SIGILL.SIGBUS.SIGFPE异常,而且堆栈还是崩溃 ...
- 研究Xposed相关二:如何root android模拟器(android4.3.1)
从上一篇文章 研究Xposed相关一:Xposed框架的安装 了解了Xposed框架的安装过程,但是Xposed的使用有一个基础前提,那就是设备的Root权限已经获取的状态下:那这一篇文章就来讲述下如 ...
- Android双机(网络和USB)调试及其完美ROOT
本文主要讲如下两个内容. 1. 如何让一部Android手机带两台PC进行调试. 2. 如何完美Root Android手机. 我曾经遇到过这样的问题,Mac OS X上测试Android的系统程 ...
- android 版本权限差别,android apk 的root 权限和USB adb 权限的区别
USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限,通常如果adb shell 看到是: Android 4.0 以后 ...
最新文章
- 掌握图神经网络GNN基本,看这篇文章就够了
- Orecle基本概述(2)
- 微信小程序想要最短服务路径
- 计算机网络专业教学模式,计算机网络技术专业教学模式改革探索
- nacos使用_使用Nacos的CMDB实现微服务的就近访问!
- 打印机一直显示正在打印中_中国和桌面3D打印机正在引领3D打印市场
- 在EditPlus中配置PHP调试
- 读书笔记∣元数据:用数据的数据管理你的世界 Ch.5-8
- vue分享卡住_vue init webpack卡住无反应??
- Java集合Collection之实现原理解读(LinkedList)
- 解析rtcm32报文工具_rtcm数据格式技术分享
- 柠檬班python自动化百度云_带三开头的名字女孩名字大全
- HOJ 1568 Fibonacci(对数,数列通项公式)
- 巨量引擎最大转化投放实战案例深度解析!
- linux图形化界面进不去的问题(startx命令报错bash:startx command not found) 经验之谈
- kodi remote android,使用Android和iOS在Win10系统中设置Kodi Remote方法
- element-plus中el-dialog导致props报错问题解决
- Android获取一周每一天的日期
- java model类_Java Model类代码示例
- 《嵌入式 – GD32开发实战指南》第14章 内部温度传感器