1.前言
本文为源码定制学习的root指纹抹除篇,通过本文的学习,读者可以掌握Android指纹的基本定制能力和root定制能力,本文参考了看雪大佬应用root检测通杀篇,为实验记录笔记。有问题,可以一一指出:
本文第二节主要讲述基本原理
本文第三节主要讲述实验
本文第四节主要为总结
2.基础知识
2.1 指纹解析
需要对Android指纹进行修改,最重要是明白build.prop
的参数含义,这里截取网上文章中的一部分,方便大家理解:
1 |
# begin build properties (开始设置系统性能) |
参考文章:Android系统build.prop文件生成过程
后面我们要修改设备的指纹,主要关注两个文件:buildinfo.sh
和Makefile
2.2 root检测方式
一般Android 上root检测的基本方式包含:
1 |
(1)检查su命令是否存在 |
具体可以分为:Android root的系统指纹、root的路径指纹、root的执行操作、第三方工具等
参考文章:修改ROM实现自定义su命令-root检测通杀,这里给出了一些基本的root检测指纹:
1 |
1.detectRootManagementApps—检测常见su包名,如{“com.noshufou.android.su”, “com.noshufou.android.su.elite”, “eu.chainfire.supersu”, “com.koushikdutta.superuser”, “com.thirdparty.superuser”, “com.yellowes.su”, “com.topjohnwu.magisk”, “com.kingroot.kinguser”, “com.kingo.root”, “com.smedialink.oneclickroot”, “com.zhiqupk.root.global”, “com.alephzain.framaroot”} |
具体的大家可以参考原文
我在前面的文章:Android漏洞之战调试与反调试也用真实的代码进行了展演示,这里大家可以进行参考
3.实验
实验环境:
1 |
pixel Android8.0.1 |
3.1 user版本的编译
首先,我们编译user版本的镜像,里我需要编译的目标版本是aosp_sailfish-user
,那么在编译的选项中是没有这一项的,根据lunch
命令列出的文件,随意找一个文件进行修改,我们以device/google/marlin/vendorsetup.sh
文件为例,进行修改
1 |
source build/envsetup.sh |
我们随便打开一个配置文件进行添加,例如这里我们打开配置文件device/google/marlin/vendorsetup.sh
1 |
vim device/google/marlin/vendorsetup.sh |
我们也可以发现之前的userdebug版本声明也在这里面
然后我们再次初始化并选择设备:
1 |
source build/envsetup.sh |
可以发现此时我们就多了user版本,然后我们选择该版本
编译:make -j4
编译完成
我们可以发现现在就是user的版本,也没有root权限,和我们平时使用的手机一样
这里我们在网上找一个root检测工具,我们可以发现此时的手机是未经过root的
尽管我们现在编译的是user版本,但是我们试验了一些测试的APP,发现其中有一些APP还是检测系统含有root,经过分析我们发现,无论是user编译还是user-debug编译,我们的系统签名都使用的是test-key,而我们真正的手机一般是release-key签名后发布的,所以很多APP将这里作为检测点
这里有两种方案:
(1)编译release-key版本的系统
由于后面我们还要开展指纹抹除实验,所以这里给大家推荐一个文章,想要实现可以去试下:Android——编译release版签名系统
(2)修改指纹
我们这里为了简单的实验,后面在实验中将这里的进行抹除
1 |
test-keys--->release-keys |
然后为了开展后面的实现,我们尝试拿到user版本的指纹,由于此时无法root,所以无法查看 /system/build.prop
的信息,所以我们直接对设备进行root
1 |
8.0刷入root步骤: |
针对Android8.0的设备获得root,最方便的便是刷入Magisk
此时我们再次查看设备的指纹:
可以发现此时我们可以找到指纹,这里我们保存该指纹信息
3.2 userdebug版本编译
我们按上面的编译步骤选择userdebug版本
我们可以发现userdebug的指纹明显不一样,此时我们再查看一下
3.3 root指纹抹除
前面我们分别对user版和debug版的系统进行了分析,相应不少朋友应对一些常见的root检测的应用进行处理,那能不能即获得root的操作,又拥有user一样的镜像呢,这里我们就需要对root进行定制和指纹抹除
首先我们用文件对比工具来进行比较:
我们只需要将这些差异的地方一一进行修改即可
(1)test-keys
前面我们提到了这个问题,所以这里我们需要将其进行修改,这里直接将test-keys
修改为release-keys
我们先查找一下位置:
然后我们搜索ro.build.tags
,可以在buildinfo.sh
中找到
然后我们继续定位后面的值,在build/make/core/Makefile
中
这里我们直接修改为release-keys
(2)ro.build.display.id
按照前面的思路进行定位:
build/make/core/Makefile
这里我们将其值修改为和user保持一致
注意这里我们使用release-key
(3)ro.build.version.incremental
这里我们可以将buildinfo.sh
和Makefile文件都修改
即我们修改BF_BUILD_BUMBER
的值就可以了
(4)ro.build.date和ro.build.date.utc
这两个是编译是时间,为了与后面保持一致,我们还是进行修改
然后我们进行修改:
(5)ro.build.type
buildinfo.sh
Makefile
直接在此处修改即可
(6)ro.build.user和ro.build.host
buildinfo.sh
这里我们直接修改为用户名和主机
(6)ro.build.flavor
然后我们直接进行修改
(7)ro.build.description
应修改为:
1 |
aosp_sailfish-user 8.1.0 OPM1.171019.011 eng.Windaa.20221109.050000 release-keys |
(8)ro.build.fingerprint
一样,我们进行定位
然后我们进行修改
1 |
Android/aosp_sailfish/sailfish:8.1.0/OPM1.171019.011/Windaa11090500:user/release-keys |
(9)ro.product.model、ro.product.brand、ro.product.name
一些朋友想要设备向google的原设备一样,可以修改手机的代号和产品名称,这里就不修改了,感兴趣朋友可以修改
3.4 root定制
root定制这里参考通用的方法:xu为自定义的名称
1 |
AOSP/system/extras/su下修改Android.mk中su修改为xu |
第一处
第二处
第三处
3.5编译
然后再次编译,选择user-debug版
1 |
lunch:24 |
3.6效果演示
我们重新刷机,刷机完成后,就可以发现定制的镜像和原理看起来一致
定制后:
定制前(user版):
我们可以试下,看能不能正常root
可以发现是没有问题的
4.总结
本文编译了user版和user-debug版,并通过指纹定制将user-debug魔改为user版,为后续试验提供了更多的方便,相关文件后续上传github
5.参考文献
1 |
https://bbs.pediy.com/thread-273485.htm#msg_header_h2_0 |
- source:security-kitchen.com
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论