![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
安卓10系统源码开发定制
文章平均质量分 79
安卓10系统源码开发入门到精通,多个开发实际案例。比如frida工具集成、ida集成以及selinux添加配置等使用技巧。
优惠券已抵扣
余额抵扣
还需支付
¥239.90
¥399.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
xiaomaNo01
专注安卓系统研究开发定制、安卓ndk开发、安卓应用安全防护和逆向分析、模拟器、刷机交流等相关知识分享,系统定制、frida、xposed(sandhook、edxposed)学习、App加固等等
展开
-
[Frida集成篇]FA_01.内置fridaserver可执行程序到手机系统
内置frida工具到安卓10系统原创 2022-07-12 11:52:57 · 791 阅读 · 0 评论 -
[Frida集成篇]FD_01.三种方案实现Frida脚本持久化研究
frida-gadget持久化研究frida-gumjs脚本持久化研究frida-inject脚本持久化研究。原创 2022-11-08 08:48:16 · 3813 阅读 · 0 评论 -
[Frida集成篇]FD_02.基于frida-inject脚本持久化开发实战
frida-inject脚本持久化的方案App开关文件目录以及脚本存储文件目录selinux配置封装和超级Root权限后台进程通信的java Api接口以及封装访问脚本相关目录文件的Java接口系统源码中添加App启动的时候执行frida-inject命令的逻辑代码开发控制App实现对第三方App 持久化的配置。原创 2022-11-08 08:52:29 · 1877 阅读 · 0 评论 -
[Frida集成篇]FC_01.ida server内置以及App控制启动、停止和配置端口
集成到手机系统进程中添加启动、停止的逻辑代码开发控制实现控制停止、启动、端口修改。原创 2022-10-26 21:09:56 · 1839 阅读 · 0 评论 -
[Frida集成篇]FB_03.开发控制App实现对App使用frida-inject工具
Android(l).linux原有的进程通信方式如管道、消息队列、共享内存、套接字、信号量、信号。比如Zygote进程的IPC采用的是Socket机制;比如adbd进程采用了socket通信机制。(2).安卓扩展的通信方式主要是Binder通信。比如进程主要是使用Binder来完成跨进程间的通信。由于通过修改adbd源码,adbd运行以后拥有了超级Root权限。所以我们可以将他当成一个su程序,只是App不能像正常的su程序那样执行su命令来调用其他shell命令。原创 2022-10-26 16:11:39 · 1652 阅读 · 0 评论 -
[Frida集成篇]FB_02.基于tcp通信实现类似su功能的调用
在超级权限进程中创建监听连接基于通信实现一个简单的类似程序的调用功能。原创 2022-10-25 13:00:07 · 1759 阅读 · 0 评论 -
[Frida集成篇]FB_01.内置frida-inject到手机系统
是frida中提供的可以直接放到手机端执行注入js脚本到App程序进行hook的工具。也就是说使用命令可以脱离PC端执行注入了。平时我们用frida进行App注入的时候,多半都是PC端安装frida工具,然后把放到手机端。手机端启动开启端口监听,PC端的frida工具通过端口连接到然后相应的命令去让执行相应的操作。将工具下载以后通过adb push命令放到手机,比如放到路径"原创 2022-10-24 19:05:44 · 2437 阅读 · 0 评论 -
[Frida集成篇]FA_07.编译官方fridaserver或者strongFrida并替换系统内置版本
主要是通过patch代码的方式,为frida官方源码进行一些修改,抹除一些关键特征,为Android构建反检测版本的。原创 2022-10-24 18:37:51 · 1776 阅读 · 0 评论 -
[Frida集成篇]FA_06.不用刷机情况下升级或者降级系统中的fridaserver
由于在不断的更新中,可能有时候需要升级或者降级手机里面内置的。如果重新拷贝到源码里面编译刷机就显得比较麻烦。由于我们开发的手机系统运行已经拥有了超级权限。所以可以通过命令来升级或者降级手机系统中的。原创 2022-10-13 18:56:20 · 1630 阅读 · 0 评论 -
[Frida集成篇]FA_05.App中编写控制fridaserver启动和停止的代码逻辑
"已经添加了相关控制属性。原创 2022-10-08 10:36:55 · 858 阅读 · 0 评论 -
[Frida集成篇]FA_04.开发system权限的App并内置到手机系统
内置到手机系统开发权限的并内置到手机系统。原创 2022-09-16 14:39:02 · 1171 阅读 · 0 评论 -
[Frida集成篇]FA_03.添加自定义属性控制fridaserver启动和停止
本节主要内容:在Android源码中添加自定义属性配置App读取/设置自定义属性的selinux策略将fridaserver启动方式代码改为属性控制为了通过安卓系统的属性控制fridaserver启动和停止,将加入如下属性:2.系统中添加属性2.1 系统中新增属性在文件"build\tools\buildinfo.sh"中添加以下属性,添加之后属性如下:2.2 为新增的属性配置selinux标签由于新增的属性需要在后续开发的具有System权限的App中设置和获取。如果不配置系统App的selin原创 2022-09-14 06:49:00 · 774 阅读 · 0 评论 -
[Frida集成篇]FA_02.配置fridaserver为后台进程
frida后台运行原创 2022-07-18 22:10:44 · 634 阅读 · 0 评论 -
[Frida集成篇]安卓10系统内置frida相关工具实战教程
1. 前言 frida工具在逆向工程中用的越来越多。平时我们在安卓端需要把frida server或者frida-inject等工具通过adb push放到手机。然后去启动。有时候需要修改frida server的启动端口,那就需要先手动输入命令去结束当前正在运行的frida server,然后重新使用新端口启动。或者偶尔数据线突然断开了,又的重新电脑终端执行命令去启动。这种操作起来非常繁琐麻烦。为了简化frida-server或者frida-inject的操作,可以通过将frida-s....原创 2021-04-12 12:19:55 · 1837 阅读 · 3 评论 -
安卓10源码开发定制(37)DexClassLoader加载流程分析
一、前言 在安卓app加固、插件化开发过程中,DexClassLoader用的比较多。像现在的各种类Xposed的框架在加载外部插件的时候,也使用了DexClassLoader来进行动态加载模块,然后反射调用插件配置的入口方法。 在8.0系统以后,新增了一个InMemoryDexClassLoader。和DexClassLoader都是继承于BaseDexClassLoader。本章节只分析DexClassLoader,下一章分析InMemoryDexClassLoader...原创 2021-03-19 10:57:54 · 983 阅读 · 0 评论 -
安卓10源码开发定制(36)系统截屏流程之surfaceflinger服务处理流程分析
一、surfaceflinger启动 surfaceflinger作为显示系统非常重要的服务。在init启动之后init进程通过解析surfaceflinger.rc配置文件进行启动。surfaceflinger.rc文件路径如下:frameworks\native\services\surfaceflinger\surfaceflinger.rc 该文件内容如下:service surfaceflinger /system/bin/surfaceflinger c...原创 2021-03-19 10:54:14 · 1075 阅读 · 0 评论 -
安卓10源码开发定制(35)系统截屏流程之JNI层分析
一、前言 在上一篇安卓10源码开发定制(34)系统截屏流程之Java层分析已经分析了系统截屏中Java层的流程。本篇将接着上篇分析系统截屏在JNI层的流程。二、截屏JNI层流程分析1.SurfaceControl.java类中的jni接口 SurfaceControl.java中定义了native方法来提供屏幕截图操作。如下所示: private static native ScreenshotGraphicBuffer nativeScreensho...原创 2021-03-19 10:52:00 · 723 阅读 · 0 评论 -
安卓10源码开发定制(34)系统截屏流程之Java层分析
一、前言 安卓手机中可以通过同时按下"音量-"键和"电源键"实现屏幕截屏,某些手机也可以通过屏幕下拉快捷菜单中的"截屏"功能实现截屏。本文章分析测试的是lineageOS 17.1的系统通过按下"音量-"键和"电源键"实现屏幕截屏的流程分析。二、PhoneWindowManager简单说明 在安卓系统中常见的按键比如HOME、电源键、返回键、音量键等处理是在PhoneWindowManager类中首先进行处理。所以如果需要对这些按键特殊逻辑处理就需要修改Ph...原创 2021-03-12 09:56:24 · 650 阅读 · 0 评论 -
安卓10源码开发定制(32)captive portal检测导致Wifi网络显示感叹不可访问原因分析和解决
最近在lineageOS官网下载小米5s plus手机的刷机包刷机开机之后连接wifi。wifi图标显示叉号提示“网络连接受限”。但是实际上能上网。如下图所示: 刚出现这个叉号还以为手机不能上网,怀疑刷机包有问题。然后下载了魔趣10.0的刷机包验证一下,刷进去之后连接wifi没有显示任何符号。通过网上搜索查看相关资料,找到了原因和解决方法。详细解决方法参考如下文章:安卓10源码开发定制(32)captive portal检测导致Wifi网络显示感叹不可访问原因分析和解决...原创 2021-03-08 09:47:56 · 1912 阅读 · 1 评论 -
安卓10源码开发定制(31)安卓系统属性系统之启动属性服务流程分析
一、前言 最近在研究通过添加自定义安卓系统属性的方式来实现控制后台服务启动和停止。如果在关闭selinux的情况下,添加自定义的属性读取、写入比较方便。如果开启selinux的情况下,就显得稍微麻烦一些了。需要为自定义的属性添加seandroid策略,为对应的进程域添加相应的允许规则才能达到修改的目的。在安卓系统中,通过属性控制后台服务启动和停止一个最好的参考例子是adbd进程的配置。在init.rc中,控制adbd启动和停止的参考实现如下:#在"开发者选项"中通过选择"...原创 2021-03-12 09:59:20 · 651 阅读 · 0 评论 -
安卓10源码开发定制(30)screencap命令源码分析
一、screencap命令介绍 安卓系统中screencap命令是一个屏幕截图命令。以下是该命令的帮助说明: 在终端通过adb shell命令执行屏幕截图,可以将当前的屏幕保存为png图片。如下所示: 如果命令不带-p参数,会将屏幕的原始数据直接输出到终端。二、screencap源码分析 1.screencap源码路径 screencap源码路径位于://源码路径frameworks/base/cmds/screencap/...原创 2021-03-07 13:47:37 · 1224 阅读 · 1 评论 -
安卓10源码开发定制(29)手电筒控制源码分析
一、前言 最近突发奇想,想做一个项目。将闲置手机变成可以利用的智能家居设备,比如在家里面通过手机App控制另一台手机的手电筒开和关(当做电灯泡)等等操作。先从最简单的功能开始研究,控制手电筒开始。二、手机手电筒所在App定位 将手机usb调试模式接入电脑。然后使用uiautomatorviewer工具获取手电筒所在的界面信息。如下所示: 有图中可以知道所在包名为"com.android.systemui"。在安卓系统源码中SystemUI应用的源码路...原创 2021-03-05 09:57:51 · 722 阅读 · 2 评论 -
安卓10源码开发定制(28)System.loadLibrary 流程分析
一、前言 在Android App开发中,如果涉及到jni开发,常常会使用System.loadLibray来加载生成的so文件。以下将通过安卓10的源码,追踪System.loadLibrary的内部流程。二、System类调用分析 System类源码路径如下:libcore\ojluni\src\main\java\java\lang\System.java 在该类中loadLibrary函数代码如下: public static ...原创 2021-03-04 15:11:42 · 743 阅读 · 1 评论 -
安卓10源码开发定制(25)配置搭建Android Studio作为源码开发环境
前言 之前一直都是用SourceInsight工具来阅读修改Android源码。SourceInsight阅读源码比较不错,但是一直没找到方法配置代码提示功能。平时开发Android app或者jni的时候体验到了Android Studio强大的代码智能提示,所以就想通过参考网上的一些教程亲自配置使用Android Studio作为源码阅读开发环境。软硬件环境 配置基础环境信息如下所示: 环境清单 参数信息 电脑操作系统...原创 2021-03-01 11:26:54 · 561 阅读 · 0 评论 -
安卓10源码开发定制(27)开发内置自定义Launcher之内置Launcher为默认启动器
一、前言 在上一篇文章安卓10源码开发定制(27)开发内置自定义Launcher之开发自己的Launcher已经实现了Android Studio创建了一个Launcher的项目,并可以像普通App一样安装到手机设备并切换作为当前的启动器。本章将介绍移除系统默认的Launcher模块,使用自定义的Launcher来替换系统默认的Launcher。 二、内置自定义Launcher (1)、编译自定义的Launcher为MyHome.apk ...原创 2021-03-01 11:24:46 · 1423 阅读 · 1 评论 -
安卓10源码开发定制(27)开发内置自定义Launcher之开发自己的Launcher
一、前言 Launcher是安卓系统中的桌面启动器,安卓系统的桌面UI统称为Launcher。手机在和用户交互的过程中,Launcher为用户提供了各种App启动的入口。有了Launcher就可以对App进行很多操作,比如清理缓存、卸载、权限设置等等。由于系统自带的Launcher都是功能比较标准的,有时候想通过定制个性化的Launcher来替换系统的Launcher来实现一些扩展功能。通过Launcher可以实现很多特殊的功能。列举如下几个: 禁止卸载App 控制App是否隐藏...原创 2021-03-01 11:23:32 · 1353 阅读 · 0 评论 -
安卓10源码开发定制(26)java核心库libcore中添加安卓属性获取、设置接口全局任意调用
安卓源码开发过程中,java核心库libcore中添加安卓属性获取、设置接口全局任意调用实现。参考文章:安卓10源码开发定制(26)java核心库libcore中添加安卓属性获取、设置接口全局任意调用原创 2021-02-23 11:19:58 · 606 阅读 · 2 评论 -
安卓10源码开发定制(24)framework层自定义系统服务开发(3)编写App测试验证自定义系统服务
安卓系统中添加自定义系统服务,然后编写App进行测试验证教程。原文章链接如下:安卓10源码开发定制(24)framework层自定义系统服务开发(3)编写App测试验证自定义系统服务原创 2021-02-18 15:33:26 · 587 阅读 · 1 评论 -
安卓10源码开发定制(24)framework层自定义系统服务开发(2)系统源码中添加自定义系统服务
文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。一、添加IGetWifiMacInterface.aidl和GetWifiMacServiceManager 在如下目录中创建目录wifiex目录:frameworks\base\core\java\android 将上文中Android Studio创建好的IGetWifiMacInterface.aidl和GetWifiMacServiceManager.java文件复制到wifiex目录。如下图所示...原创 2021-02-17 16:02:38 · 752 阅读 · 1 评论 -
安卓10源码开发定制(24)framework层自定义系统服务开发(1)Android Studio创建自定义系统服务
文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。前言 本文将实现读取"/sys/class/net/wlan0/address"文件的方式获取wifi mac为例实现在安卓10源码中添加framework层自定义系统服务。 安卓10中由于普通App直读取取"/sys/class/net/wlan0/address"文件获取wifi mac失败。然而添加系统服务读取可以读取成功,主要是由于安卓10的安全机制中限制了普通app不能读取"/sys/clas...原创 2021-02-17 15:59:44 · 855 阅读 · 3 评论 -
安卓10源码开发定制(23)内核系统调用openat Hook研究测试
安卓10源码开发定制(22)内核系统调用openat Hook研究实现以下操作基于lineageOs 17.1,一、参考:Hooking Android System Calls for Pleasure and Benefit原创 2021-02-08 11:17:49 · 780 阅读 · 0 评论 -
安卓10源码开发定制(21)GPS定位研究(3)修改GPS定位数据测试gps定位代码
安卓10源码开发定制(21)GPS定位研究(3)修改GPS定位数据测试gps定位代码文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。一、测试gps定位功能的方法探讨在安卓App gps定位开发过程中,往往需要进行GPS定位的测试。由于室内gps信号被挡住了,所以如果需要测试gps定位的代码,要么跑到室外去等待gps定位更新或者使用安卓sdk中提供的"MOCK_LOCATION"功能编写额外的测试代码来模拟gps位置更新。如果从系统定制的角度出发,也可以根据gps上报的流程原创 2021-02-05 23:07:32 · 2025 阅读 · 1 评论 -
安卓10源码开发定制(21)GPS定位研究(2)gps位置改变监听源码分析
安卓10源码开发定制(21)GPS定位研究(2)gps位置改变监听一、安卓中GPS定位更新监控在安卓很多提供定位服务的App应用程序中,不仅需要获取当前的位置信息,还需要监视位置的变化,在位置改变时获取到当前的位置信息。gps定位中,LocationManager提供了一种便捷、高效的位置监视方法requestLocationUpdates(String provider, long minTime, float minDistance,LocationListener listener),可以根据位置原创 2021-02-03 15:50:28 · 880 阅读 · 0 评论 -
安卓10源码开发定制(22)使用jadx反编译工具查看aidl文件实现代码
安卓10源码开发定制(22)使用jadx反编译工具查看aidl文件实现代码文章首发微信公众号:QDROID88888,如果感兴趣可以关注一下公众号。一、安卓源码中aidl文件介绍在 Android系统源码中经常看到很多.aidl后缀的文件。这些aidl文件主要是binder进程间通信的接口描述语言。在源码编译的时候才好会通过工具成基于该 .aidl 文件的 IBinder 接口,并最终打包到系统的jar包中。所以在源码中搜索不到具体的java实现代码。为了查看aidl文件的java实现代码,可以有如下原创 2021-01-26 06:05:54 · 627 阅读 · 1 评论 -
安卓10源码开发定制(21)GPS定位研究(1)LocationManager对象获取流程
一、app中使用LocationManager获取gps定位信息安卓app中使用如下代码获取当前设备的GPS定位信息,参考代码如下:public class MainActivity extends Activity{ //声明LocationManager LocationManager locationManager=null; private String provider=null; @Override protected void onCreate(B原创 2021-01-25 10:04:35 · 655 阅读 · 0 评论 -
玩转安卓10源码开发定制(20)libc中添加日志输出接口
一、libc中日志输出讨论安卓源码libc中,默认提供了日志调试输出接口。源码位于如下://头文件定义bionic/libc/async_safe/include/async_safe/log.h//实现文件bionic/libc/async_safe/async_safe_log.cpp通过async_safe_log.cpp代码分析,写入日志主要是使用UNIX domain socket建立到域"/dev/socket/logdw"的通信,然后写入日志数据。核心逻辑代码如下:原创 2021-01-22 15:44:41 · 495 阅读 · 1 评论 -
玩转安卓10源码开发定制(19)Java核心库libcore中添加Log接口任意调用
一、前言最近在弄系统定制功能的时候(比如打印File构造函数的参数),需要修改libcore中的核心代码并打印日志输出。虽然Android提供了android.utils.Log日志工具类,但是不能在android java层的核心库libcore中调用。虽然可以使用System.out输出,但是不能满足需求。所以参考android.utils.Log的实现方式移植导libcore核心库中供整个安卓系统java层调用。二、移植Log的方式讨论将android.utils.Log移植到libcore中可原创 2021-01-20 19:48:29 · 574 阅读 · 0 评论 -
玩转安卓10源码开发定制(17)编译Windows平台adb和fastboot工具
在安卓系统源码中,我们可以通过在Ubuntu中安装mingw 64(32位不讨论了,现在都流行64位的)提供交叉编译Windows平台运行的程序。下图中展示的windows 中安卓sdk tools一些常用的工具命令都可以ubuntu 安卓源码中编译:一、mingw简要说明MinGW 的全称是:Minimalist GNU on Windows 。它将开源C语言编译器GCC移植到了Windows平台下,并且包含了Win32API,因此可以将源代码在Linux系统中编译为可在 Window...原创 2021-01-19 10:11:07 · 809 阅读 · 0 评论 -
玩转Android10源码开发定制(16)LineageOS中编译user模式的系统
玩转Android10源码开发定制(16)LineageOS中编译user模式的系统一、安卓系统编译选项简介android编译的时候可以选择编译选项 eng、user 和 userdebug。1.eng编译选项(1). 系统编译的时候安装标签LOCAL_MODULE_TAGS为 user、debug、eng 的模块(2). 设定属性 ro.secure=0,关闭安全检查功能(3). 设定属性 ro.debuggable=1,启用应用调试功能(4). 默认打开 adb 功能,adb拥有root权原创 2021-01-16 11:03:47 · 1225 阅读 · 0 评论 -
玩转Android10源码开发定制(15)实现跳过开机向导、插电源线不休眠等默认配置
玩转Android10源码开发定制(15)实现跳过开机向导、插电源线不休眠等默认配置一、前言在刷机玩机过程中,常常遇到刷机之后烦人的开机引导设置。特别是有强迫症的人,多希望开机之后就跳转到主界面。经过研究了一下,可以通过修改安卓源码中的默认设置跳过开机引导,此外还有很多其他功能,比如是否打开蓝牙、锁屏等等功能都可以通过默认配置进行修改。二、安卓系统默认配置设置介绍安卓源码中默认属性配置存放路径如下:frameworks/base/packages/SettingsProvider/res/valu原创 2021-01-15 12:15:34 · 902 阅读 · 0 评论