0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AOSP源码定制-对root定制的补充流程

哆啦安全 来源:gakki的童养夫 2024-04-01 11:04 次阅读

AOSP源码定制-对root定制的补充

介绍

前面通过修改build.prop中的指纹以及对su的修改,完成了基础的定制修改,但是碰上一些app还是能被检测到,再进行深入修改。

问题引入

ro.vendor相关

发现测试一个app时总是开不起来,但是测试别人编译好的脱壳机却能运行,最后其实只是ro.debuggable的问题,但是在分析的过程中发现了其他几处遗漏没有抹除的特征。

98822c94-e9a9-11ee-a297-92fbcf53809c.png

这里很明显,ro.vendor.build的一些参数是有aosp的特征,没有改成user版本,tests-key。

找了半天没有找到对应的修改点,查了资料,看了下目录才反应过来,vendor镜像是一开始下驱动,运行脚本时直接打包放在vendor目录下了,是谷歌自己给我编译好的。

988e582a-e9a9-11ee-a297-92fbcf53809c.png

要修改找了资料,有好几种,一种重新编译,一种解包修改再压缩,两种方法都试了,最后都是没有效果。

这里我解包修改再重打包,out目录下,vendor相关的属性已经修改完成。

9894d4fc-e9a9-11ee-a297-92fbcf53809c.png

编译刷机后,还是没效果。

98ad1d6e-e9a9-11ee-a297-92fbcf53809c.png

通过启动流程修改

继续查资料,可以明确一个事,目前app检测prop相关属性,多通过getprop命令,或者通过反射调用android.os.SystemProperties来检测,它并不会读到/system/build.prop,/vendor/build.prop文件。

那我们只需要在系统启动时,找到对应读取prop文件的流程,在中间处理一下,做点手脚就可以了。

查阅源码,找到启动流程中载入prop配置文件的关键位置:

98c4a394-e9a9-11ee-a297-92fbcf53809c.png

这里的关键函数是load_properties_from_file,查找跟进。

98cdf872-e9a9-11ee-a297-92fbcf53809c.png

这里继续跟进load_properties,很明显了,他会读取,然后通过property_set方法,按键值对写入。

98d18c4e-e9a9-11ee-a297-92fbcf53809c.png

我们可以在这里加个判断,匹配自己要修改的特征,然后自己去set。

98d51774-e9a9-11ee-a297-92fbcf53809c.png

再编译刷机,此时通过getprop命令获取到的已经是替换后的属性值了,但是文件中的是不修改的。

98e9e53c-e9a9-11ee-a297-92fbcf53809c.png

adb相关

再测试发现还是被检测,继续排查,发现是ro.debuggable的问题。

我将该值置为零,再编译发现不检测了。

但是会存在问题,进系统,切到su,data等目录不再有权限访问,这是不能接受的。

这里补充一点东西。

adb的root权限是由system/core/adb/adb.c 中控制。主要根据ro.secure以及ro.debuggable等system property来控制。

默认当ro.secure为0时,开启root权限,为1时再根据ro.debuggable等选项来确认是否可以用开启root权限,一般会降权返回一个shell用户权限。因此如果要开启adb的root权限,有两种修改的方式:

修改system property ro.secure, 让ro.secure=0。

修改adb.c 中开启root 权限的判断逻辑。

但1方法显然是很容易被检测到,正常手机ro.secure的值都是1。

所以直接将ro.debuggable=0,修改adb源码,达到不降权的目的。

这里就修改一处即可。

将这里的降权判断函数,返回值强恒为false即可。

98f3112a-e9a9-11ee-a297-92fbcf53809c.png

再测试adb直接返回了root用户权限,且ro.debuggable仍然为0。

总结

主要学习到的还是通过修改启动流程中的载入prop过程,达到抹去特征,可以将之前修改的特征通通使用这个方法进行抹除,更加简单。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177798
  • AOSP
    +关注

    关注

    0

    文章

    16

    浏览量

    6195
  • adb
    adb
    +关注

    关注

    1

    文章

    35

    浏览量

    10420

原文标题:AOSP源码定制-对root定制的补充

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    iTOP-3588开发板Android12源码定制开发uboot开发

    iTOP-3588开发板Android12源码定制开发uboot开发
    的头像 发表于 06-06 11:46 1506次阅读
    iTOP-3588开发板Android12<b class='flag-5'>源码</b><b class='flag-5'>定制</b>开发uboot开发

    迅为RK3568开发板定制扩展分区SDK源码编译-获取Linux-定制扩展分区源码

    获取 Linux-定制扩展分区源码包 编译环境说明: 现在的 SDK 源码在编译的时候会自动配置编译环境,所以对环境要求不再那么严格,经过测试,本源码可以在 ubuntu20、ubun
    发表于 11-25 10:24

    MCU的开发定制流程

    上海灵动微电子MCU开发定制流程
    发表于 01-05 07:18

    模组MAC地址定制流程是怎样的?

    模组MAC地址定制流程是怎样的?
    发表于 12-29 06:01

    定制和半定制简易IC设计流程介绍

    一般的IC设计流程可以分为两大类:全定制和半定制,这里我换一种方式来说明。 1.1 从RTL到GDSⅡ的设计流程: 这个可以理解成半定制的设
    发表于 10-20 11:38 25次下载
    全<b class='flag-5'>定制</b>和半<b class='flag-5'>定制</b>简易IC设计<b class='flag-5'>流程</b>介绍

    Vivado设计之Tcl定制化的实现流程

    其实Tcl在Vivado中还有很多延展应用,接下来我们就来讨论如何利用Tcl语言的灵活性和可扩展性,在Vivado中实现定制化的FPGA设计流程。 基本的FPGA设计实现流程 FPGA的设计
    发表于 11-18 01:48 3605次阅读
    Vivado设计之Tcl<b class='flag-5'>定制</b>化的实现<b class='flag-5'>流程</b>

    IC设计流程之全定制和半定制

    一个完整的半定制设计流程应该是:RTL代码输入、功能仿真、逻辑综合、形式验证、时序/功耗/噪声分析,布局布线(物理综合)、版图验证。
    发表于 11-24 09:17 1.2w次阅读

    fireflyAIO-3288J主板定制Android固件简介

    定制 Android 固件 前言 定制 Android 固件,有两种方法: 改源码,然后编译生成固件。
    的头像 发表于 12-26 14:35 1638次阅读

    工艺流程详解:用光固化3D打印机定制专属珠宝

    3D打印机强大而实惠的定制能力,使得类似的专属定制的大众化普及成为现实,本文小编将详细介绍使用光固化3D打印机定制珠宝的整个流程
    的头像 发表于 12-26 12:44 937次阅读

    锂离子电池定制的价格多少?定制锂电池的二种流程

    如何?锂电池价格这类才是消费者需要关注的问题。 一、定制锂电池特点 1、室内温度下充满电储存1个月的自放电率小于4%; 2、有着全自动化技术生产工艺流程和生产加工设备,制造电芯一致性好; 3、性价比非常高,同一类产品具有竞争力
    发表于 12-17 11:03 932次阅读
    锂离子电池<b class='flag-5'>定制</b>的价格多少?<b class='flag-5'>定制</b>锂电池的二种<b class='flag-5'>流程</b>

    AOSP Android11系统源码和内核源码简析

    AOSP源码中并不包括内核源码,需要单独下载,内核源码有很多版本,比如common是通用的Linux内核,msm是用于使用高通MSM芯片的Android设备,goldfish是用于An
    的头像 发表于 01-29 09:25 5378次阅读

    用TCL定制Vivado设计实现流程

    今天推出Xilinx已发布的《Vivado使用误区与进阶》系列:用TCL定制Vivado设计实现流程
    的头像 发表于 05-05 09:44 1069次阅读
    用TCL<b class='flag-5'>定制</b>Vivado设计实现<b class='flag-5'>流程</b>

    APP定制开发流程和特点

    如今APP已经成为了人们生活中不可缺少的重要组成部分,APP定制开发变得更加热门,那么你知道APP定制开发的流程有哪些吗?下面由沐渥科技小编给大家详细介绍一下。第一步需求分析,首先和客户沟通,对需要
    的头像 发表于 08-17 15:11 1247次阅读
    APP<b class='flag-5'>定制</b>开发<b class='flag-5'>流程</b>和特点

    基于Android13的AOSP源码下载及编译指南

    AOSP(Android Open Source Project)是Android操作系统的开源项目,通过下载和编译AOSP源码,您可以获得原始的Android系统,并进行定制和开发。
    的头像 发表于 01-17 09:49 3921次阅读
    基于Android13的<b class='flag-5'>AOSP</b><b class='flag-5'>源码</b>下载及编译指南

    AOSP源码定制-内核驱动编写

    有时候为了分析一些壳的检测,需要在内核层面对读写相关的操作进行监控,每次去修改对应的内核源码编译重刷过于耗时耗力,这里就来尝试编写一个内核驱动,载入后监控读写。
    的头像 发表于 04-23 11:15 1197次阅读
    <b class='flag-5'>AOSP</b><b class='flag-5'>源码</b><b class='flag-5'>定制</b>-内核驱动编写