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 知识整理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值