使用
结构
Xposed Framework(原生)
EdXposed(兼容 Android 8.0+)
LSPosed / LSPosed-Zygisk(模块化/轻量级)
TaiChi(太极,无Root兼容方案)
VirtualXposed(免Root沙盒环境)
Dreamland(类似Xposed的Zygisk实现)
SandHook(支持双模式Hook)
Whale(部分场景混合使用)
Frida(通过JavaScript同时Hook Java/Native)
进阶分析
Stalker(动态跟踪)
加密 / 协议分析
对抗检测与安全绕过
Frida 检测点与反检测
绕过方法
加固壳对抗
源码与底层原理
Frida 架构
Android ART Hook 原理
Native Hook 原理
源码改造方向
NDK开发和JNI原理
构建与编译工具
开发中的常用框架
SELinux Policy编写与调试
常用策略规则类型(allow / deny / auditallow)
sepolicy工具链使用
audit2allow分析与策略修正
Process.start()方法调用
Process.start()
关键步骤:
a. 检查进程是否已存在(通过 ProcessRecord)
ProcessRecord
b. 创建新进程的 UID/GID
c. 准备 zygote 参数(包含 main class、资源路径等)
APK路径获取:从 PackageManagerService读取 /data/app/包名/base.apk
PackageManagerService
/data/app/包名/base.apk
IPC:通过 LocalSocket连接 zygote
LocalSocket
ZygoteInit.runSelectLoop()监听 socket
ZygoteInit.runSelectLoop()
关键处理:
a. 解析参数(ZygoteConnection.Arguments)(含APK路径)
ZygoteConnection.Arguments
b. fork()新进程(继承预加载的系统类,APP的APK尚未加载)
fork()
c. 关闭不必要的文件描述符
d. 设置进程名、UID/GID 等属性
优化机制:预加载5000+系统类(不包含APP自身的类)
入口:ActivityThread.main()
ActivityThread.main()
关键流程:
a. 初始化主线程 Looper
Looper
b. 创建 ActivityThread实例
ActivityThread
c. 调用 attach()通过 Binder 注册到 AMS
attach()
d. 加载APK核心文件:
classes.dex:通过 PathClassLoader加载(路径:/data/app/包名/base.apk)
classes.dex
PathClassLoader
resources.arsc:由 AssetManager.addAssetPath()绑定APK路径
resources.arsc
AssetManager.addAssetPath()
lib.so:System.loadLibrary()触发解压到 /data/app/包名/lib/
lib.so
System.loadLibrary()
/data/app/包名/lib/
e. 启动 Application(此时已完成Manifest解析和资源加载)
Application
f. 创建首个 Activity的 Context
Activity
Context
常用语言
文件结构
DEXAndroid字节码文件,Java .class 转换而来,供Dalvik虚拟机运行。结构:
.class
Header(文件头)
String IDs(字符串索引)
Type IDs(类型索引)
Proto IDs(方法原型索引)
Field IDs(字段索引)
Method IDs(方法索引)
Class Defs(类定义)
Data(类数据、方法代码、调试信息、注解)
OATART虚拟机对DEX预编译的优化文件,提升启动速度和执行效率。结构:
ODEXDalvik虚拟机时代的DEX优化版本。结构:
ELF (Executable and Linkable Format)Linux/Android的标准可执行文件格式。常见子文件:
APK (Android Package)
JAR (Java Archive)
IDA Pro 插件
面具模块
ksu模块
apatch模块
xp模块
ebpf模块
ebpf基础原理
eBPF 的架构和工作机制
BPF 虚拟机和指令集
eBPF 验证器
eBPF 编程与调试
C 语言编写 eBPF 程序
bpf() 系统调用接口
理解如何在用户态加载、附加和管理 eBPF 程序。
熟悉 bpftrace、bpftool、perf、bcc 工具集,调试 eBPF 程序。
eBPF 的集成
代码混淆技术
动态保护技术
完整性保护技术
跨语言混淆技术
加壳方式
Android系统安全架构
Android 版本安全演进
Android 8:Project Treble、FBE、强化 SELinux。
Android 9:Metadata Encryption、禁止空闲应用访问传感器。
Android 10:Scoped Storage、TLS 1.3 默认开启。
Android 11:数据访问审计 API。
Android 12+:隐私仪表盘、麦克风/摄像头全局开关。
Android 13/14:Play Integrity API 替代 SafetyNet,增加虚拟化安全。
附件↑↑↑
大家好呀~ 这是我整理的安卓逆向学习笔记和思维导图(头发都掉了不少)。作为一个还在成长中的安卓安全爱好者,这份资料肯定有不少:
知识盲区(毕竟我也不是全知全能的大佬)过时内容(安卓技术更新比女朋友变脸还快)个人偏见(可能有些分类方式比较"任性")不过想着独乐乐不如众乐乐,还是决定分享出来。希望能给需要的人一些参考,也欢迎各位大神一起来查漏补缺
持续更新中!
感谢各位前辈的宝贵建议
okhttp3
SSL_write
SSL_read
27042
gum-js-loop
frida-gadget
ptrace
syscall hook
art_quick_invoke_stub
startActivity()
startService()
ActivityManagerService
system_server
Intent
ActivityRecord
ServiceRecord
.so
.ko
.text
.data
.rodata
.symtab
META-INF/
lib/
res/
assets/
AndroidManifest.xml
WASI/Wasm逆向(Flutter 3.0+模块分析)
global-metadata.dat
GameAssembly.dll
libil2cpp.so
[培训]传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
陈可牛 这些楼主都做过了吗[em_079]
我不是卷王 缺风控 常用风控建模智能算法 模型迭代优化 风控模型体系搭建 模型监控与异常处理 风控特征画像体系的搭建 特征监控和特征异常处理 搭建智能风控策略体系 智能风控与人工的结合