【转】Root检测与反检测
0x00背景
需要在手机上构建一个环境对root过的设备进行伪装,让设备里面的应用将该设备当成未root的设备。
1
0x01 Root检测手段
1.检查已安装的APK包:
SuperSU应用程序或者一键root的程序:
(例如One Click Root,iRoot,360一键root,kingroot)
Root Apps:需要root权限才能使用其功能的应用程序。例如busybox,SetCPU,Titanium Backup。
Root Cloakers:隐藏设备是否已植根的应用程序。例如Root Cloaker,Root Cloaker Plus。
API挂钩框架:提供API挂钩功能的库。例如Cydia Substrate,Xpose Framework。
2.检查已安装的文件:
静态路径:
/ system / xbin / su,/ system / bin / su或/system/xbin/…/xbin/su(路径操作)
/ system / xbin / busybox以及BusyBox创建的命令的所有符号链接。
在生根期间或生根后安装的热门应用程序包的/ data / app / 或/ system / app / 。
动态路径:解析PATH变量,在每个条目后附加“/ su”; 在循环中打开每一个
检查BUILD标签:来自Google的股票Android图像是使用“release-keys”标签构建的。如果出现“ 测试密钥”,这可能意味着Android映像是开发人员构建或非官方构建。该值基本上来自“ro.build.tags”。
3.检查目录权限:
Root使某些根文件夹可读,如/ data或可写,如/ etc,/ system / xbin,/ system,/ proc,/ vendor / bin等。运行mount命令并检查是否有任何设备使用“rw”挂载标记,或尝试在“/ system”或“/ data”文件夹下创建文件。
尝试使用命令“ mount -o remount,rw / system ” 挂载“/ system”分区,并检查返回码。
C heck流程/服务/任务:
ActivityManager.getRunningAppProcesses方法返回当前正在运行的应用程序进程的列表。此API可用于确定是否有任何需要root权限的应用程序正在运行。
getRunningServices或getRunningTasks:获取当前正在运行的服务或任务。
使用Shell命令检查生根特征:使用Runtime.exec,ProcessBuilder或execve(“su”)
ps | grep :列出当前正在运行的进程。
ls - :检查文件系统中是否存在文件
包列表:
pm path :输出目标包的完整路径
cat /system/build.prop或grep ro.build.tags:检查是否= release-keys。该测试仅可用作指标,因为在野外存在许多相反的观察结果。
构建版本:“ ro.modversion ”可用于识别某些自定义Android ROM(例如CyanogenMod)
4.检查系统属性:
ro.secure = 0,表示adb shell将以root用户身份运行,而不是shell用户。
ro.debuggable = 1或service.adb.root = 1,然后adb也将以root身份运行。
毋庸置疑,这些技术可以通过功能挂钩或自定义构建Android ROM等来绕过。
开源的rootbeer就是用来查看是否运行在root环境
https://github.com/scottyab/rootbeer/blob/master/README.md
0x02 root反检测手段
原理:hook调用api的函数
开源的RootCloak用来对抗root监测
https://github.com/devadvance/rootcloak
参考:
https://www.blackhat.com/docs/eu-15/materials/eu-15-Benameur-All-Your-Root-Checks-Are-Belong-To-Us-The-Sad-State-Of-Root-Detection.pdf
Detecting Root on Android
https://blog.csdn.net/lintax/article/details/70988565
from:https://blog.csdn.net/tangsilian/article/details/85255929
【转】Root检测与反检测的更多相关文章
- unity3d 赛车游戏——复位点检测优化、反向检测、圈数检测、赛道长度计算
接着上一篇文章说 因为代码简短且思路简单 所以我就把这几个功能汇总为一篇文章 因为我之前就是做游戏外挂的 经过验证核实,**飞车的复位点检测.圈数检测就是以下的方法实现的 至于反向检测和赛道长度计算, ...
- OPENCV图像特征点检测与FAST检测算法
前面描述角点检测的时候说到,角点其实也是一种图像特征点,对于一张图像来说,特征点分为三种形式包括边缘,焦点和斑点,在OPENCV中,加上角点检测,总共提供了以下的图像特征点检测方法 FAST SURF ...
- 离群点检测与序列数据异常检测以及异常检测大杀器-iForest
1. 异常检测简介 异常检测,它的任务是发现与大部分其他对象不同的对象,我们称为异常对象.异常检测算法已经广泛应用于电信.互联网和信用卡的诈骗检测.贷款审批.电子商务.网络入侵和天气预报等领域.这些异 ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
- JavaScript浏览器检测之客户端检测
客户端检测一共分为三种,分别为:能力检测.怪癖检测和用户代理检测,通过这三种检测方案,我们可以充分的了解当前浏览器所处系统.所支持的语法.所具有的特殊性能. 一.能力检测: 能力检测又称作为特性检测, ...
- 人脸检测的harr检测函数
眼球追踪需要对人脸进行识别,然后再对人眼进行识别,判断人眼张合度,进而判断疲劳... 解析:人脸检测的harr检测函数使用方法 代码理解: 利用训练集,检测出脸部,画出框 void CAviTestD ...
- 24V低压检测电路 - 低压检测电压(转)
24V低压检测电路 - 低压检测电压 参考: ADC采样工作原理详解 使用单片机的ADC采集电阻的分压 问题: 当ADC采集两个电阻分压后的电压的时候,ADC转换出来的电压值和万用表量出来的不一样差异 ...
- 目标检测之单步检测(Single Shot detectors)
目标检测之单步检测(Single Shot detectors) 前言 像RCNN,fast RCNN,faster RCNN,这类检测方法都需要先通过一些方法得到候选区域,然后对这些候选区使用高质量 ...
- 带你读AI论文丨用于目标检测的高斯检测框与ProbIoU
摘要:本文解读了<Gaussian Bounding Boxes and Probabilistic Intersection-over-Union for Object Detection&g ...
随机推荐
- 从汇编语言写到c语言
好了,言归正传,裸机程序没有操作系统的支持,想要用c语言,就只能先使用汇编语言手动配置c语言需要的环境,听起来很高大上,其实需要做的很简单:指定堆栈指针的值就好. 那么完成这个简单的事情之前,先要明白 ...
- MySQL小记——数据格式化
记录下今天在项目中出现的一个小问题. 将通过除运算获得的结果数据进行保留两位小数的处理时,我用了MySQL 的 FORMAT(X, D)函数,之前一直没有出现问题,但是由于周期性更新的数据库中突然出现 ...
- workman 使用心得
1. 服务端调试: 直接在 Events.php 中 echo 变量, 即可在 命令行工具中 看到输出的信息. 以便进行调试. 2. 客户端调试: 由于是js代码, 可以直接 用 conso ...
- 【转】三个重复的ACK意味着发生拥塞?
三次重复的ACK,可能是丢包引起的,丢包可能是网络拥塞造成的,也可能是信号失真造成的. 三次重复的ACK,也有可能是乱序引起的,而乱序和网络拥塞没有直接关系. 如果就写这两行,感觉什么都没写,接下来的 ...
- atoi()和itoa()函数详解以及C语言实现
atoi()函数 atoi()原型: int atoi(const char *str ); 函数功能:把字符串转换成整型数. 参数str:要进行转换的字符串 返回值:每个函数返回 int 值,此值 ...
- 高并发架构系列:Redis并发竞争key的解决方案详解
https://blog.csdn.net/ChenRui_yz/article/details/85096418 https://blog.csdn.net/ChenRui_yz/article/l ...
- 微信小程序之随笔
先写到这里https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/AuthSetting.html
- 一道简单的广搜题:Knight Moves
这本来是要用双向宽度搜索的,但是我用简单的广搜也成功了,L<=300,也不会超时?? 另外一个问题就是,我本来想用原来的代码交,结果80分??将边界条件从小于L改成小于等于L,就对了.我可能不会 ...
- go语言-二进制与位运算
一.进制介绍 1.二进制:0,1 -->不能直接用二进制来表示一个整数,用%b输出二进制 package mainimport "fmt"func main() { var ...
- jquery手机触屏滑动拼音字母城市选择器代码
今天用到城市选择,直接用拼音滑动方式来选择,用的时候引入jquery(个别样式需要自己修改) <div class="yp_indz"><img src=&quo ...