type
Post
status
Published
date
Jul 14, 2026
slug
summary
做 Android 逆向、设备定制、Magisk 模块开发、企业 MDM 设备管控、APP 安全对抗时,总会遇到一大堆底层晦涩名词:BootROM、SELinux 策略、AVB 验签、Zygisk、PLT‑Hook、denylist 隐藏等等。很多文档只给干巴巴的英文释义,新手看完一头雾水。
本文结合日常开发场景,把术语用通俗生活化例子讲解,分为 6 大模块:系统启动、SELinux 权限、AVB 安全校验、ARM64 与编译链接、Hook 注入框架、反检测对抗;既可以当作术语查阅手册,也适合入行逆向的同学建立整体知识框架。
tags
Android
category
Android逆向
icon
password
网址
上次编辑时间
Jul 14, 2026 07:44 AM
comment
AI 总结
前言
做 Android 逆向、设备定制、Magisk 模块开发、企业 MDM 设备管控、APP 安全对抗时,总会遇到一大堆底层晦涩名词:BootROM、SELinux 策略、AVB 验签、Zygisk、PLT‑Hook、denylist 隐藏等等。很多文档只给干巴巴的英文释义,新手看完一头雾水。
本文结合日常开发场景,把术语用通俗生活化例子讲解,分为 6 大模块:系统启动、SELinux 权限、AVB 安全校验、ARM64 与编译链接、Hook 注入框架、反检测对抗;既可以当作术语查阅手册,也适合入行逆向的同学建立整体知识框架。
专业术语通俗讲解(按领域分组)
1.1 Android 启动 / 系统
类比家里依次启动全屋电器:按下电源后,硬件固件→引导程序→内核→安卓系统→APP。
表格
术语 | 通俗释义 + 举例说明 |
BootROM | SoC 芯片内置固件,通电执行的第一段代码,相当于芯片 BIOS;MTK 机型进入 BROM 刷机模式就是由 BootROM 运行,此时还未启动 Android 系统。 |
bootloader | 引导加载器(lk/aboot),作用就是加载 kernel 和 ramdisk,没有它内核无法启动,类比电脑 BIOS 的启动选择项。 |
boot.img | boot 分区镜像,内部包含 header、kernel、ramdisk、dtb、AVB 校验数据;刷机更新 boot.img 本质就是替换手机内核。 |
ramdisk | 压缩格式为 cpio.gz的内存根文件系统。内核刚启动磁盘还未挂载,ramdisk 临时存放/init等基础文件,全部驻留在内存,关机即销毁。 |
init | PID=1 的一号进程,所有进程的源头,分为 3 阶段:1.First‑StageMain:挂载磁盘分区;2.SetupSelinux:编译加载 SELinux 安全策略;3.SecondStageMain:读取 init.rc 脚本启动 zygote。 |
init.rc | init 进程专属配置脚本,支持 on触发条件、services 服务、mkdir、mount、setprop、start 等命令,常见用法:开机完成后启动对应服务。 |
zygote | APP 和 system_server的父进程;提前预加载 Android 框架代码,打开微信抖音时通过 fork 复制自身生成 APP 进程,减少资源重复加载,加快应用启动速度。 |
system_server | zygote 孵化出来的系统核心进程,PMS、AMS 等核心服务都运行在这里;一旦该进程崩溃手机就会重启。 |
ServiceManager | Binder 服务的注册中心。系统服务调用 addService完成登记;App 调用getService获取服务;service list命令可以查看全部注册服务。 |
binder | Android 独有的 IPC 进程间通信机制。例如 App 调用 GPS 定位服务,两个进程内存相互隔离,依靠 binder 完成数据交互。 |
PackageManager (PMS) | 应用管理核心服务,负责安装、卸载、查询应用;自动扫描 /system/app、/system/priv‑app等目录下的应用并完成安装。 |
priv‑app | 特权应用,放置在 priv‑app 目录下,能够申请普通第三方 App 获取不到的 privapp‑permissions 特权,比如静默安装软件、修改系统配置。 |
packages.xml / packages.list | PMS 持久化文件,保存本机安装应用列表、版本、权限启用状态;手机重启之后 PMS 读取该文件获取应用信息。 |
Device Owner (DO) / Device Admin | MDM 设备最高管控权限;企业管理员配置 DO 后可以静默安装卸载 App、远程重启设备、禁用硬件,风控软件经常依靠该权限限制用户。 |
A/B 分区 | boot_a、boot_b 双分区设计。系统更新时后台升级备用分区,重启切换分区;即使升级中途断电,另一个完好分区依然可以正常开机,实现无损升级。 |
dtb / dtbo | dtb 用来描述 CPU、屏幕、摄像头等硬件信息;dtbo 是设备树覆盖层;不同硬件版本通过设备树适配内核,不用频繁修改内核源码。 |
1.2 SELinux(强制权限管控)
类比小区门禁系统:传统 Linux 区分管理员和普通用户,SELinux 是第二层强制安全限制;就算拿到 root 权限,SELinux 规则不允许依旧不能访问对应文件,默认规则:拒绝一切未明确放行的操作。
表格
术语 | 通俗释义 + 举例说明 |
SELinux | Linux 强制访问控制(MAC)。例如 root 账号下 init 进程读取 App 缓存文件,如果没有 allow 规则依旧会被拒绝,防止恶意 root 进程随意篡改系统。 |
policy | SELinux 的安全规则集合,编译后生成二进制文件;init 进程第二阶段将 policy 加载进内核全程生效。 |
CIL | SELinux 策略源码语言(S‑表达式),编写安全规则的源代码文件。 |
secilc | CIL 编译器,把 cil 源码编译成内核能够识别的二进制 policy,编译阶段校验规则合法性。 |
domain / type | domain 代表进程标签(zygote、init);type 代表文件标签(apk_data_file);SELinux 权限判断只依靠标签,和文件所属用户无关。 |
allow 规则 | 格式 allow(源domain 目标type 类别 权限),仅代表授予权限,不会主动触发动作。示例:allow zygote apk_data_file:file read允许 zygote 读取 App 数据目录。 |
neverallow | 编译期强制约束,禁止指定权限组合;如果编写的 policy 违反 neverallow,编译直接失败,规避不安全权限配置。 |
file_contexts | 文件路径和 type 标签的映射文件; /data/data/*默认打上apk_data_file标签,restorecon命令按照该配置重新打标签。 |
service_contexts | binder 服务和 type 标签绑定,用来限制哪些进程可以访问对应 Binder 服务。 |
property_contexts | 系统属性和 type 标签绑定,控制进程是否能够读取 ro.build.fingerprint这类系统属性。 |
enforcing / permissive | enforcing:规则违规直接拦截;permissive 宽容模式:仅打印日志不拦截操作;root 设备经常设置为 permissive 规避限制。 |
typepermissive | 单独设置某个 domain 为宽容模式,整机 SELinux 处于 enforcing 时,该进程违规也只会记录日志;MIUI 大量使用该配置,也是逆向开发突破口,但会降低安全性。 |
MLS / MCS | 多级安全与多类别安全机制;给不同 App 分配 category 标签实现隔离;socket 通信会被隔离约束,普通 Binder 通信不受 MCS 限制。 |
mlstrustedsubject | 拥有该标签的进程可以绕过 MCS 隔离,读取所有隔离空间的数据,Magisk 组件普遍配置该标签。 |
transition / no_trans | 进程通过 exec 拉起新程序时切换 domain; execute_no_trans代表执行程序后进程标签保持不变,例如 init 启动 zygote 就会发生 domain 切换。 |
restorecon | 读取 file_contexts配置,修复错乱的 SELinux 文件标签。 |
1.3 AVB /dm‑verity(谷歌防篡改校验)
类比文件数字签名:厂商给系统分区计算哈希并用私钥签名;开机内核校验哈希,一旦文件被修改就判定设备不安全,触发谷歌风控检测。
表格
术语 | 释义 |
AVB | Android Verified‑Boot,全程校验 boot、system 分区文件完整性,系统文件改动就判定设备不安全。 |
vbmeta | AVB 元数据分区,保存各分区哈希值、厂商签名、校验配置,内核启动优先读取 vbmeta 配置。 |
vbmeta flags | 0 = 严格校验,system 改动直接无法开机;3 = 关闭 AVB 校验,刷机 root 时基本都会修改 flags 值为 3。 |
dm‑verity | 块设备级哈希树校验,给 system 分区构建哈希树;运行时实时校验文件,将 system 分区设置为只读,防止修改系统文件。 |
verifiedbootstate | green:官方上锁无修改;yellow:userdebug 版本上锁;orange:bootloader 解锁(root 机大多为此状态);red:校验失败系统损坏;Play Integrity 会读取该状态判断设备是否 root。 |
device_state | locked:bootloader 上锁;unlocked:bootloader 解锁;解锁之后才能刷第三方 boot 镜像,但会触发谷歌安全检测。 |
SafetyNet / Play Integrity | Google 设备完整性检测;App 通过该服务读取 boot 状态、SELinux 模式,检测到 root 或者解锁后,银行、海外软件就会限制功能。 |
1.4 ELF / ARM64 / 链接原理(Native 层基础)
类比 Windows 的 exe 和 dll 文件,Android 原生程序以 ELF 格式存在,弄懂本节是 Native Hook 开发的基础。
表格
术语 | 通俗释义 + 举例说明 |
ELF | Android 可执行文件格式(可执行程序、.so 库);包含 .text代码段、.rodata只读数据段、.data全局变量段、.bss未初始化变量段。 |
PIE | 位置无关可执行文件,开启 ASLR 内存地址随机化;每次启动程序加载地址不一样,防止黑客依靠固定内存地址漏洞攻击,新版 Android 强制开启 PIE。 |
static vs dynamic linking | 静态链接:编译时把 libc 打包进程序,安装包体积偏大;动态链接:运行时由 linker64 加载外部 so 库,Android 全部采用动态链接。 |
bionic | Google 自研的 libc 库和 linker64 链接器,不同于 Linux glibc,Android 原生程序只能依赖 bionic。 |
DT_NEEDED | ELF 内部字段,记录当前 so 依赖的其他库,linker 依靠这个字段加载依赖的 so 文件。 |
dlopen / dlsym | dlopen运行时加载外部 so;dlsym获取 so 内部函数地址,插件化框架、注入工具大量使用这一组 API。 |
PLT / GOT | PLT(过程链接表)、GOT(全局偏移表);第一次调用外部函数时 linker 填充 GOT 里的真实函数地址;修改 GOT 表项就是 PLT‑Hook,拦截外部函数调用。 |
LD_PRELOAD | Linux 环境变量,优先加载指定 so 库,替换系统原有函数实现 Hook;Android7 + 依靠 linker namespace 大幅限制了该变量。 |
native bridge | 指令集翻译桥,比如 x86 平板运行 ARM64 程序;Zygisk 借助 native bridge入口注入 zygote 进程,ro.dalvik.vm.native.bridge配置桥接加载器。 |
linker namespace | Android7.0 推出库隔离机制,通过 ld.config.txt划分命名空间,不同 App 的 so 相互隔离,避免恶意程序随意加载系统库。 |
ARM64 / AArch64 | 手机主流 64 位精简指令集;拥有 x0‑x30 共 31 个通用寄存器;函数调用约定:前 7 个参数依次存放在 x0‑x7 寄存器。 |
SVC #0 | ARM64 进入内核态的指令;x8 寄存器存放系统调用编号,执行该指令完成用户态到内核态切换,ptrace、文件打开都依靠系统调用实现。 |
ADRP/ADD | ARM64 高频取址指令,依靠 PC 程序计数器相对偏移计算内存地址,逆向分析汇编代码时经常遇到。 |
BTI | 分支目标识别安全特性;函数入口必须添加 bti指令,阻止黑客跳转到非法内存执行恶意代码,现代手机默认开启 BTI。 |
1.5 注入 / Hook 框架原理
Hook 核心:替换原有函数逻辑,分为 Java 层 Hook(Xposed)和 Native 层 Hook(inline‑hook、PLT‑Hook)。
表格
术语 | 通俗释义 + 举例说明 |
Xposed | 老牌 Java 层 Hook 框架,修改 zygote 启动替换 app_process实现 Java 方法拦截;缺点是高版本 Android 适配困难,兼容性较差。 |
LSPosed / liblspd | Xposed 升级版,基于 Zygisk 模式运行,依靠 LSPlant 修改 ART 虚拟机的 ArtMethod 结构体实现 Hook,是现在主流模块框架。 |
Riru | 早期 zygote 注入方案,借助 libmemtrack 系统库完成注入;随着 Android 版本升级漏洞失效,现已淘汰。 |
Zygisk | Magisk 官方 zygote 注入方案,借助 native‑bridge 进入 zygote 进程;denylist 黑名单可以在指定 App 里清除 Magisk 痕迹躲避检测。 |
Zygisk Next / r0zygisk | 脱离 Magisk 独立实现 Zygisk 注入,不需要 Magisk Root 就可以注入 zygote 进程。 |
LSPlant | LSPosed 的 ART‑Hook 引擎,修改虚拟机 ArtMethod 结构体指针替换 Java 方法,实现模块功能。 |
inline hook | Native 底层 Hook 方式;修改函数开头汇编指令跳转到自定义代码;需要调用 mprotect把只读代码段修改为可写,风险较高。 |
PLT hook | 修改 GOT 表里面的函数指针拦截外部调用;对比 inline‑Hook 更加稳定,不会修改原始汇编指令。 |
InMemoryDexClassLoader | 内存加载 Dex,dex 全程驻留在内存不写入磁盘;反取证开发常用,App 无法扫描到注入的 dex 文件。 |
ptrace | Linux 原生调试系统调用,可以附加进程读写内存完成注入;缺点特征明显,风控软件检测到 ptrace 附着就判定作弊。 |
carrier | 本项目自定义术语:指将我们编写的 so 送入目标进程的载体机制,Zygisk、ptrace、native‑bridge 都属于 carrier。 |
scrub(denylist hide) | Zygisk 隐藏机制;打开黑名单里的 App 时,Zygisk 卸载自身 so 并清理内存痕迹,让 App 检测不到 Magisk。 |
1.6 反检测 / 对抗风控
现在银行、短视频 App 会检测 Root、注入 so、系统篡改;反检测就是伪造设备环境骗过风控;封控代表 App 检测到设备异常后限制账号功能。
表格
术语 | 通俗释义 + 举例说明 |
props hook | Hook __system_property_find/get;App 读取ro.boot.flash.locked等属性时返回伪造结果,假装设备处于官方上锁状态。 |
maps hide | Hook openat/read函数过滤/proc/self/maps内容;maps 文件会展示进程加载的全部 so 库,过滤注入 so 路径避免被检测。 |
stack hiding | 拦截 Throwable堆栈相关方法,清除 Hook 产生的栈帧;防止 App 通过调用栈发现 LSPosed 注入痕迹。 |
dexFile 伪装 | 反射修改 dexElement.mFileName,把我们注入的 dex 文件名修改为系统 jar 包名称,让 App 认为 DEX 文件属于系统文件。 |
crash 清扫 | App 崩溃会在磁盘留存崩溃日志、xlog 日志;crash 清扫就是程序退出前删除日志文件,清除修改痕迹。 |
ClassLoader swap | 修改 ClassLoader 父加载器,将自定义类加载器挂载到系统 ClassLoader 下,App 识别不到第三方注入加载器。 |
封控 | 项目自定义术语:App 检测到 Root、注入框架之后限制账号功能,例如禁止登录、关闭评论、部分功能不可用。 |
总结
完整的技术链路梳理:
- BootROM‑>bootloader‑> 内核‑>init‑>zygote 完成手机开机;
- SELinux、AVB‑dm‑verity、Play Integrity 构成谷歌三层安全壁垒;
- ARM64+ELF 原理决定 Native‑so 编译加载方式,衍生 PLT‑Hook、inline‑Hook;
- Zygisk、LSPlant 完成代码注入,再依靠属性伪造、maps 隐藏、栈清理对抗 App 风控。
阅读内核、Magisk 源码以及逆向安全文章时,借助这份术语清单就可以快速看懂底层逻辑;从事逆向安全、企业设备定制开发,可以把本文当作速查手册。
- Author:24th
- URL:https://24th.top/article/39de5b08-46db-800c-8218-ee03a26337b7
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










