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

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

3天内不再提示

Android10系统内置fridaserver可执行程序到手机系统

哆啦安全 来源:卓码星球 2023-07-25 09:04 次阅读

1.环境准备

源码开发环境:

Windows 10+Vmware player 15+ubuntu-20.04

安卓系统版本:

基于LineageOS 17.1版本(Android 10)

测试手机型号:

oneplus 3

2.开启adb root权限

2.1 adbd中涉及adb root权限开启判断

adbd中涉及adb root权限开启判断源文件文件路径:

systemcoreadbdaemonmain.cpp

该文件中涉及权限判断的方法代码如下:

staticboolshould_drop_privileges(){
...
boolro_secure=android::GetBoolProperty("ro.secure",true);
boolro_debuggable=__android_log_is_debuggable();

//Dropprivilegesifro.secureisset...
booldrop=ro_secure;

//...except"adbroot"letsyoukeepprivilegesinadebuggablebuild.
std::stringprop=android::GetProperty("service.adb.root","");
booladb_root=(prop=="1");
booladb_unroot=(prop=="0");
if(ro_debuggable&&adb_root){
drop=false;
}
//...and"adbunroot"letsyouexplicitlydropprivileges.
if(adb_unroot){
drop=true;
}

returndrop;
}

2.2 主要涉及修改地方

源码编译过程中我们选择编译userdebug版本编译,userdebug版本系统的selinux权限放的宽一些,方便我们进行配置修改。修改主要涉及修改的关键属性如下:

#adbd中会根据ro.secure=0来判断adbd是否需要root用户权限
ro.secure=0
#设置ro.adb.secure=0表示默认adb授权打开,不用弹出烦扰usb授权对话框了
ro.adb.secure=0

可以通过两种方式来配置adb root用户权限,分别是修改编译过程中main.mk文件的属性设置。另一种是直接修改adbd中的源码,将相关属性获取的地方直接返回需要修改的值。

2.2.1 main.mk中修改属性方式

修改文件路径:

buildmakecoremain.mk

以下是该文件中配置之后的部分内容:

user_variant:=$(filteruseruserdebug,$(TARGET_BUILD_VARIANT))
enable_target_debugging:=true
tags_to_install:=
ifneq(,$(user_variant))
#Targetissecureinuserbuilds.
#///ADDSTART
#ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=1
ADDITIONAL_DEFAULT_PROPERTIES+=ro.secure=0
#///ADDEND
ADDITIONAL_DEFAULT_PROPERTIES+=security.perf_harden=1

ifeq($(user_variant),user)
ADDITIONAL_DEFAULT_PROPERTIES+=ro.adb.secure=1

endif

ifeq($(user_variant),userdebug)
#Pickupsomeextrausefultools
tags_to_install+=debug
#///ADDSTART
ADDITIONAL_DEFAULT_PROPERTIES+=ro.adb.secure=0
#///ADDEND
else
#Disabledebugginginplainuserbuilds.
#///ADDSTART
#enable_target_debugging:=true
#///ADDEND
enable_target_debugging:=
endif
...

这种方式存在的问题:

App通过获取属性ro.secure/ro.adb.secure容易检测手机处于不安全状态,越狱风险。

2.2.2 adbd源码中修改属性方式

修改文件路径路径位置:

systemcoreadbdaemonmain.cpp

修改的关键代码如下:

//修改ro.adb.secure关闭usb授权对话框适合编译userdebug版本
intadbd_main(intserver_port){
...
#ifdefined(__ANDROID__)
//Ifwe'reonuserdebug/engorthedeviceisunlocked,permitno-authentication.
booldevice_unlocked="orange"==android::GetProperty("ro.boot.verifiedbootstate","");
if(__android_log_is_debuggable()||device_unlocked){
auth_required=android::GetBoolProperty("ro.adb.secure",false);
///ADDSTART
if(CONFIG_ADBD_ROOT>=0)
{
auth_required=false;
}
///ADDEND
#ifdefined(__ANDROID_RECOVERY__)
auth_required=auth_required&&
android::GetBoolProperty("ro.adb.secure.recovery",true);
#endif
}
#endif
...
}

//直接返回不降权处理
staticboolshould_drop_privileges(){

///ADDSTART适合编译userdebug版本
if(CONFIG_ADBD_ROOT>=0)
{
returnfalse;
}
///ADDEND
...
}

这种方式修改可以防止App检测属性ro.secure ro.adb.secure,不做任何修改情况下userdebug编译出来的这两个属性都为1

2.2.3 采用的修改方案

采用修改adbd源码的方式进行测试验证

3.内置fridaserver到手机系统

3.1下载fridaserver

由于测试的机型为arm 64位的,所以下载Android 64位版本。

3.2 创建fridaserver模块

(1).在源码根目录创建路径 frameworksasecmds创建mycmds目录

(2).将 fridaserver改成想要的名称拷贝到mycmds目录下,比如改成myfridaserverarm64

(3).编写 fridaserver模块编译配置Android.mk文件

以下参考配置:

#///ADDSTART
#///ADDEND
LOCAL_PATH:=$(callmy-dir)
include$(CLEAR_VARS)
LOCAL_MODULE:=myfridaserverarm64
LOCAL_MODULE_CLASS:=EXECUTABLES
LOCAL_SRC_FILES:=myfridaserverarm64
include$(BUILD_PREBUILT)

(4).将新增的myfridaserverarm64模块加入系统编译模块链

模块加入源码编译链可以在以下文件路径中添加:

buildmake	argetproductase_system.mk

在该文件中添加myfridaserverarm64模块到模块编译链中的内容参考如下:

#Basemodulesandsettingsforthesystempartition.
PRODUCT_PACKAGES+=
myfridaserverarm64
abb
adbd
...

4.编译源码

执行如下命令编译:

qiang@ubuntu:~/lineageOs$sourcebuild/envsetup.sh
qiang@ubuntu:~/lineageOs$breakfastoneplus3
qiang@ubuntu:~/lineageOs$brunchoneplus3

5.刷机

使用twrp进行刷机。

C:UsersQiang>adbpushC:UsersQiangDesktoplineage-17.1-20210322-UNOFFICIAL-oneplus3.zip/sdcard/update.zip
C:UsersQiangDesktoplineage-17.1-20210322-UNOFFICIAL-on...pushed,0skipped.30.2MB/s(783272894bytesin24.715s)

C:UsersQiang>adbrebootrecovery

C:UsersQiang>

进入recovery以后选择刷机包完成刷机操作。

此处使用到的几个命令说明:

1.adbpush
表示将电脑端文件传输到手机端
比如:adbpushc:\test.txt/data/local/tmp/test.txt

2.adbrebootrecovery
手机进入recovery模式

6.验证

adb权限验证:

C:UsersQiang>adbshellps-Z|findstr"adbd"
usu:s0root277111846446212poll_schedule_timeout7482d393c8Sadbd

C:UsersQiang>

以上命令执行之后可以看到adbd运行的时候运行的安全域"usu:s0",运行的用户为root用户。所以在selinux打开的情况下,adbd运行同时满足运行安全域"usu:s0"以及运行用户"root"的条件,就具备了超级root权限。

启动内置myfridaserverarm64验证:

C:UsersQiang>adbshell
OnePlus3:/#myfridaserverarm64-D


C:UsersQiang>adbshellps|findstr"myfrida"
root6298112401643772poll_schedule_timeout7316a903c8Smyfridaserverarm64

C:UsersQiang>





审核编辑:刘清

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

    关注

    4

    文章

    567

    浏览量

    26923
  • Android系统
    +关注

    关注

    0

    文章

    56

    浏览量

    13185
  • ADB驱动
    +关注

    关注

    0

    文章

    13

    浏览量

    6234

原文标题:Android10系统内置fridaserver可执行程序到手机系统

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

收藏 人收藏

    评论

    相关推荐

    用于分析可执行程序和内存转储的命令行工具介绍

    Axf Tool 是桃芯科技一个用于分析可执行程序和内存转储的命令行工具。该工具已集成到 ingWizard 的项目快捷菜单里。
    的头像 发表于 11-03 17:00 638次阅读
    用于分析<b class='flag-5'>可执行程序</b>和内存转储的命令行工具介绍

    labview生成的可执行程序的反编译

    坛子里有没有哪位大神知道关于labview生成的可执行程序的反编译问题,如何反编译exe的应用程序
    发表于 07-17 14:19

    各位大大,vxworks能否直接调用可执行程序

    的脚本或方法,可以直接调用可执行程序。ps:我看网上的一些资料说python可以运行在vxworsk下,同时在linux下python可以直接调用可执行程序,只是不知道这套方法在vxworks下是否
    发表于 04-29 12:13

    嵌入式系统中让Python程序可执行

    这部分内容只对Linux/Unix用户适用,不过Windows用户可能也对程序的第一行比较好奇。首先我们需要通过chmod命令,给程序可执行的许可,然后运行程序。$ chmod a+
    发表于 02-27 17:04

    what!!! 10分钟做出Labview可执行程序!!!

    可执行程序!https://mp.weixin.qq.com/s?__biz=MzI3MDIzMDQwNQ==&mid=100000411&idx=2&sn
    发表于 04-16 22:04

    求大佬分享RK3399 Android10 ROOT方法

    求大佬分享RK3399 Android10 ROOT方法
    发表于 03-08 09:03

    16KEY-B的可执行程序

    16KEY-B的可执行程序 /*******************************************************************/ /* */ /* 单片机开发
    发表于 11-22 18:02 14次下载

    Setup软件安装可执行程序工具免费下载

    本文档的主要内容详细介绍的是Setup软件安装可执行程序工具免费下载。 etup.exe是电脑的可执行进程文件,在正常情况下setup.exe表示为系统的安装文件setup.exe,遇到系统
    发表于 11-13 08:00 10次下载

    一加7系列Android10系统开始推送

    9月21日,一加官推宣布,一加7&一加7 Pro的Android 10系统阶段性推送正式开始!
    的头像 发表于 09-23 09:53 2377次阅读

    三星Galaxy S10海外部分用户收到Android10更新

    早前三星公布了国行版机型更新Android10的升级计划表,最快的Galaxy S10国行版要等到明年1月份才能获得Android10系统更新。
    的头像 发表于 12-03 15:42 2669次阅读

    诺基亚7.2可升级Android10系统

    在最新的Android10中,谷歌针对大屏设备进行了体验上的优化,同时改进了ART机制,谷歌将部分预先配置好的文件放在云端,以提升应用的加载速度和运行效率,使Android应用整体的流畅度以及稳定性进一步提升。
    的头像 发表于 04-01 16:37 3746次阅读
    诺基亚7.2可升级<b class='flag-5'>Android10</b><b class='flag-5'>系统</b>

    在标准C语言中编译出来的可执行程序

    在标准C语言中,编译出来的可执行程序分为代码区(text)、数据区(data)和未初始化数据区(bss)3个部分。如下代码
    的头像 发表于 06-16 09:01 1544次阅读
    在标准C语言中编译出来的<b class='flag-5'>可执行程序</b>

    如何嵌入第三方可执行程序

    你可能碰到过这种需求:需要在自己开发的应用程序中嵌入某个第三方的可执行程序,那么该如何实现呢?其实是很简单的,借助Windows API,简单几步即可完成。
    的头像 发表于 11-01 09:54 3496次阅读

    云服务器编译Android10系统源码遇到的坑介绍

    连接上Google Pixel3手机,其中手机中的Android系统版本号需要跟即将编译的Android
    的头像 发表于 11-24 10:39 2527次阅读

    LabVIEW中执行系统命令VI介绍

    LabVIEW自带一个执行系统命令VI(System Exec.vi),位于函数选板的“互连接口”>>“库与可执行程序”>>“执行系统命令”
    的头像 发表于 04-25 11:47 6374次阅读
    LabVIEW中<b class='flag-5'>执行</b><b class='flag-5'>系统</b>命令VI介绍