吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3483|回复: 22
收起左侧

[Android 原创] AOSP Android 10内置FridaGadget实践02(完)

  [复制链接]
debug_cat 发表于 2023-2-19 21:53

背景

封面.png
内置frida-gadget前篇:AOSP Android 10内置FridaGadget实践01

上一篇内置完成脚本管理app后复制脚本到/data/system/xsettings目录下无权限。

现在开始给文件夹配置权限。

环境:

vm Ubuntu 18.04

AOSP 10_r41

Pixel 3

as

文件夹权限配置

位置和文件:

0x1:
android-10.0.0_r41/system/sepolicy/public/file.te

末尾增加一行
这里和文件夹有关是xxxxx_file。
这个目录名字就是当时在rc文件配置的xsettings/xxxxx目录

type xiaojianbang_file, file_type, data_file_type, core_data_file_type, mlstrustedobject;

0x1:
android-10.0.0_r41/system/sepolicy/private/file_context
android-10.0.0_r41/system/sepolicy/prebuilts/api/29/private/file_contexts

001filecontext增加目录权限.jpg

这2个路径的文件69行:

/data/system/xsettings(/.*)?  u:object_r:xiaojianbang_file:s0

0x2:
android-10.0.0_r41/system/sepolicy/private/system_app.te
android-10.0.0_r41/system/sepolicy/prebuilts/api/29/private/system_app.te
002system_appQQ截图20230205214728.jpg

末尾:

allow system_app xiaojianbang_file:dir { getattr setattr open read write remove_name create add_name search rmdir };
allow system_app xiaojianbang_file:file { getattr setattr open read write create unlink };

0x3:
末尾增加

003untrustQQ截图20230205214921.jpg

android-10.0.0_r41/system/sepolicy/private/untrusted_app.te

allow untrusted_app xiaojianbang_file:dir { getattr open read write search rmdir };
allow untrusted_app xiaojianbang_file:file { getattr open read write };

android-10.0.0_r41/system/sepolicy/private/untrusted_app_25.te

allow untrusted_app_25 xiaojianbang_file:dir { getattr open read write search rmdir };
allow untrusted_app_25 xiaojianbang_file:file { getattr open read write };

android-10.0.0_r41/system/sepolicy/private/untrusted_app_27.te

allow untrusted_app_27 xiaojianbang_file:dir { getattr open read write search rmdir };
allow untrusted_app_27 xiaojianbang_file:file { getattr open read write };

android-10.0.0_r41/system/sepolicy/private/untrusted_app_all.te

allow untrusted_app_all xiaojianbang_file:dir { getattr open read write search rmdir };
allow untrusted_app_all xiaojianbang_file:file { getattr open read write };

目录:
android-10.0.0_r41/system/sepolicy/private/compat/26.0/26.0.ignore.cil
android-10.0.0_r41/system/sepolicy/private/compat/27.0/27.0.ignore.cil
android-10.0.0_r41/system/sepolicy/private/compat/28.0/28.0.ignore.cil

004apexdQ截图20230205215303.jpg

005QQapexd截图20230205215339.jpg

3个文件在apexd前增加:
xiaojianbang_file

006pre_apexdQQ截图20230205215500.jpg

目录:
android-10.0.0_r41/system/sepolicy/prebuilts/api/29/private/compat/26.0/26.0.ignore.cil
android-10.0.0_r41/system/sepolicy/prebuilts/api/29/private/compat/27.0/27.0.ignore.cil
android-10.0.0_r41/system/sepolicy/prebuilts/api/29/private/compat/28.0/28.0.ignore.cil
3个文件在apexd前增加:
xiaojianbang_file

策略增加完成之后,剩下的就是管理app的权限处理了。

管理脚本APP开发

管理功能描述:
1:查看当前用户安装的APP,当然也可以显示系统的,目前系统APP被我过滤。
2:点击APP后进入该APP的脚本状态显示,是否激活,该APP目录下有多少个脚本文件。
3:激活APP是否启用持久化hook。
4:选择加载的js脚本。

007用户APP列表2023-02-05_22_04_32.png

当点击APP进入详情配置的时候,会在sdcard/fjs中根据APP包名创建文件夹。
编写的js脚本需要放在该包名对应的文件下才能加载到,方便每个包管理。

008jike激活状态2023-02-05_22_04_49.png

例如jike:

脚本内容:
修改com.example.myjike.CheckRoot类方法isDeviceRooted返回值。

Java.perform(function() {
    console.log("开始hook");
    var checkClass = Java.use('com.example.myjike.CheckRoot');

    var isRoot = checkClass.isDeviceRooted.overload();
    isRoot.implementation = function() {
         console.log("返回我们hook的值true");
         return true;
    };

});

这就是完成后的功能。

激活操作是:
在xsettings中创建一个文件做标记,APP启动的时候第一篇文章已经分析过,根据包名和文件是否存在,
来注入so。

009创建标记文件QQ截图20230205221447.jpg
复制脚本操作是:

从sdcard中复制js文件到xsettings中对应的APP包名下。
010js文件复制目录QQ截图20230205221623.jpg

注入so的时候把脚本复制到APP安装目录下的files中。

011安装目录下的js文件QQ截图20230205221711.jpg

APP的操作主要是创建目录和文件,基本上没什么难度。

重点是创建完包名后要给路径权限

Os.chmod(path, 0775);

复制sdcard中的js文件到了xsettings之后需要给足够权限。

try {
    //dest目标js文件的路径
    Runtime.getRuntime().exec("chmod 777 " + dest);
} catch (IOException e) {
    e.printStackTrace();
}

如果整个过程中遇到创建目录,复制文件实现异常,基本上权限问题。

配置文件中需要给
android:sharedUserId="android.uid.system",获取系统权限。

内置apk到系统,或者把源码放进去AOSP源码一起编译也可以。

012systemuidQQ截图20230205222121.jpg

测试APP的hook效果

默认情况下方法返回false:

013默认返回值2023-02-05_22_11_06.png

把写好的js脚本放到sdcard/fjs/pkg目录下:

014极客的包脚本2023-02-05_22_09_35.png

进入管理app中,长按选择脚本,确认:

015激活脚本2023-02-05_22_11_42.png

打开目标APP查看hook结果:

016修改返回值true2023-02-05_22_12_16.png

对接APP的代码预览:

017APP代码预览QQ截图20230205222315.jpg

这样就可以给具体的APP配置hook脚本,脱离pc使用了。

视频版本的效果,哔站:https://www.bilibili.com/video/BV1xG4y1X7GK

免费评分

参与人数 8威望 +1 吾爱币 +24 热心值 +7 收起 理由
junjia215 + 1 + 1 用心讨论,共获提升!
1MajorTom1 + 1 热心回复!
qq20048888 + 1 有adb调试开启,却又检测不到的吗?
后脑i + 1 + 1 用心讨论,共获提升!
KKBon + 1 我很赞同!
zhczf + 1 + 1 我很赞同!
赤〆夜 + 1 用心讨论,共获提升!
正己 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

正己 发表于 2023-2-19 22:43
期待大佬后续佳作
xixicoco 发表于 2023-2-20 04:07
wantwill 发表于 2023-2-20 08:42
sanshenghepan 发表于 2023-2-20 08:51
这个是真牛
 楼主| debug_cat 发表于 2023-2-20 09:29
正己 发表于 2023-2-19 22:43
期待大佬后续佳作

得到大佬的点评~~~~~~~~~~
gulei 发表于 2023-2-20 10:24
大佬V5下载看看
tt5200 发表于 2023-2-20 11:13
这个是真牛
后脑i 发表于 2023-2-20 13:27
向大佬学习
szy1 发表于 2023-2-20 14:22
看完了,没看懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-23 01:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表