术语表 (Glossary)

术语表 (Glossary)

收集了 Android 逆向工程中常见的术语和缩写,按类别整理为表格形式,便于快速查阅。


1. 逆向工程基础 (Reverse Engineering Fundamentals)

逆向工程领域的核心概念与通用术语。

中文名称英文名称说明
逆向工程Reverse Engineering (RE)通过分析软件的二进制代码来理解其功能、逻辑和结构的过程,通常在没有源代码的情况下进行。
反汇编Disassembly将机器码(二进制)翻译回汇编语言的过程,是逆向分析的基础步骤。
反编译Decompilation将低级代码(机器码或字节码)还原为高级语言(如 Java、C)的过程,结果是伪代码或近似源代码。
静态分析Static Analysis在不运行程序的情况下,通过检查其代码、结构和资源来理解程序行为的技术。
动态分析Dynamic Analysis在程序运行时对其进行监视、调试和分析的技术,通常涉及调试器、Hook 等工具。
二进制分析Binary Analysis对编译后的二进制文件进行检查和分析,包括结构解析、控制流分析、漏洞挖掘等。
调试Debugging使用调试器逐步执行程序,观察其内部状态(寄存器、内存、变量)以定位问题或理解逻辑。
断点Breakpoint调试时设置的暂停点,当程序执行到该位置时会中断,允许检查当前状态。
符号表Symbol Table二进制文件中保存的函数名、变量名等调试信息,去除符号表(strip)会增加逆向难度。
控制流图Control Flow Graph (CFG)以图形方式表示程序中所有可能执行路径的结构,用于理解程序逻辑。
调用图Call Graph表示程序中函数之间调用关系的有向图,有助于理解程序的整体架构。
交叉引用Cross-Reference (Xref)在反汇编工具中,跟踪某个函数或数据被哪些位置引用,是逆向分析的重要手段。
补丁Patch对二进制文件进行修改,用于绕过检测、修改逻辑或修复漏洞。
签名匹配Signature Matching通过已知的字节序列模式识别特定的函数、库或恶意代码的技术。
沙箱Sandbox一种隔离的执行环境,用于安全地运行和分析可疑程序而不影响主系统。
污点分析Taint Analysis追踪数据在程序中的传播路径,标记受外部输入影响的数据以发现潜在安全问题。
指令集架构Instruction Set Architecture (ISA)处理器支持的机器指令的集合,如 ARM、x86、MIPS 等。
精简指令集RISC (Reduced Instruction Set Computer)一种处理器设计理念,使用较少且简单的指令,ARM 处理器即采用此架构。
复杂指令集CISC (Complex Instruction Set Computer)一种处理器设计理念,使用较多且复杂的指令,x86 处理器即采用此架构。
可执行与可链接格式ELF (Executable and Linkable Format)Linux/Android Native 层使用的标准二进制文件格式,包含代码段、数据段、符号表等。
程序入口点Entry Point程序开始执行的第一条指令的地址,通常在 ELF 文件头中指定。
重定位Relocation将程序中的符号引用绑定到实际内存地址的过程,发生在链接或加载阶段。
动态链接库Shared Object (SO)Linux/Android 下的共享库文件(.so),包含可被多个程序共享的代码和数据。
过程链接表PLT (Procedure Linkage Table)ELF 文件中用于延迟绑定外部函数的跳转表,调用外部函数时先经过 PLT。
全局偏移表GOT (Global Offset Table)ELF 文件中存储外部符号实际地址的表,PLT 通过 GOT 来间接调用外部函数。
寄存器RegisterCPU 内部的高速存储单元,用于临时保存数据和指令地址,ARM 架构有 R0-R15(32位)和 X0-X30(64位)等。
Stack后进先出的内存结构,用于保存函数调用的返回地址、局部变量和参数,栈溢出是常见的安全漏洞。
Heap用于动态内存分配的内存区域,malloc/free(C)或 new/delete(C++)操作的内存来自堆。
操作码Opcode机器指令中指定要执行的操作类型的部分,反汇编器将操作码翻译为人类可读的助记符。
字节序Endianness多字节数据在内存中的存储顺序,分为大端序(Big-Endian)和小端序(Little-Endian),ARM 通常使用小端序。
地址空间布局随机化ASLR (Address Space Layout Randomization)随机化进程内存布局(代码段、栈、堆等地址)的安全机制,增加漏洞利用的难度。
位置无关代码PIC (Position Independent Code)不依赖固定内存地址即可正确执行的代码,共享库通常编译为 PIC 以支持 ASLR。
反汇编器Disassembler将机器码翻译为汇编语言的工具,如 IDA Pro、Ghidra 中的反汇编引擎。
反编译器Decompiler将低级代码还原为高级语言的工具,如 Hex-Rays(C/C++)、JADX(Java)。
十六进制编辑器Hex Editor以十六进制格式查看和编辑二进制文件的工具,可直接修改文件中的任意字节。
数据流分析Data Flow Analysis追踪数据在程序中如何产生、传播和使用的分析方法,帮助理解变量赋值和函数参数传递。
逆向工程师Reverse Engineer专门从事逆向分析的技术人员,需掌握汇编语言、操作系统原理、密码学等多领域知识。
二进制差异分析Binary Diffing比较同一软件不同版本的二进制文件以发现修改内容的技术,常用于分析安全补丁修复了什么漏洞。
脱壳器/解包器Unpacker自动或半自动地从加壳/加固程序中还原出原始代码的工具或脚本。
虚拟地址Virtual Address (VA)进程看到的内存地址,由操作系统的虚拟内存机制映射到物理地址,每个进程拥有独立的虚拟地址空间。
相对虚拟地址RVA (Relative Virtual Address)相对于模块加载基址的偏移量,在分析 ELF/PE 文件时常需在 RVA 和文件偏移之间转换。

2. Android 平台 (Android Platform)

Android 系统架构、运行时、组件和开发相关的术语。

中文名称英文名称说明
Android 运行时ART (Android Runtime)Android 5.0 引入的应用运行时环境,使用 AOT 编译技术将字节码预编译为机器码,完全取代了 Dalvik。
Dalvik 虚拟机Dalvik VMGoogle 早期为 Android 设计的虚拟机,使用 JIT(即时编译)技术,在 Android 5.0 后被 ART 取代。
DEX 文件DEX (Dalvik Executable)Android 平台的可执行字节码文件格式,APK 中的 classes.dex 包含应用的所有 Java/Kotlin 编译后的代码。
多 DEXMultiDex当应用方法数超过 65536 限制时,将代码拆分为多个 DEX 文件(classes.dex、classes2.dex 等)的机制。
OAT 文件OAT (Of Ahead-of-Time)ART 运行时使用的私有 ELF 格式文件,包含 AOT 编译后的机器码及原始 DEX 数据。
ODEX 文件ODEX (Optimized DEX)经过优化的 DEX 文件,系统在安装或首次运行时生成,以提高加载速度。
VDEX 文件VDEX (Verified DEX)Android 8.0 引入的文件格式,包含经过验证的 DEX 文件,用于加速启动和更新流程。
SmaliSmaliDalvik 字节码的人类可读汇编语言表示,可直接修改后重新打包,是 Android 逆向的重要中间格式。
BaksmaliBaksmali将 DEX 文件反汇编为 Smali 代码的工具,名字来源于冰岛语"反汇编"。
Android 应用包APK (Android Package)Android 应用的安装包格式,本质是一个 ZIP 压缩包,包含 DEX、资源文件、清单文件和签名信息。
AAB 包AAB (Android App Bundle)Google 推出的新发布格式,由 Google Play 根据设备配置动态生成优化的 APK。
清单文件AndroidManifest.xml每个 APK 必须包含的核心配置文件,声明包名、组件、权限、最低 SDK 版本等关键信息。
孵化进程ZygoteAndroid 系统中所有应用进程的父进程,通过 fork 机制快速创建新的应用进程,预加载了常用类和资源。
系统服务器System Server由 Zygote fork 出的第一个进程,承载了大量核心系统服务(AMS、PMS、WMS 等)。
活动管理服务AMS (Activity Manager Service)管理 Activity 生命周期、任务栈和进程调度的核心系统服务。
包管理服务PMS (Package Manager Service)负责应用安装、卸载、权限管理和包信息查询的系统服务。
Binder 机制Binder IPCAndroid 特有的高效进程间通信 (IPC) 机制,基于内存映射实现,几乎所有系统服务都通过 Binder 通信。
AIDL 接口AIDL (Android Interface Definition Language)Android 接口定义语言,用于定义跨进程通信的接口,编译后生成 Binder 通信所需的代理类。
JNI 接口JNI (Java Native Interface)Java 与 Native 代码(C/C++)之间的桥梁,允许 Java 调用本地函数,也允许 Native 代码回调 Java 方法。
NDK 开发包NDK (Native Development Kit)Android 官方提供的 Native 开发工具集,允许使用 C/C++ 编写高性能模块或复用已有 C 库。
调试桥ADB (Android Debug Bridge)Android 调试桥,通用命令行工具,用于与模拟器或 Android 设备通信,支持 shell、文件传输、日志等功能。
AOSP 项目AOSP (Android Open Source Project)Android 开源项目,即 Android 系统的完整源代码,是研究系统底层行为的第一手资料。
ARM 架构ARM (Advanced RISC Machines)广泛用于移动设备的精简指令集处理器架构,Android 设备主要使用 ARM 及其 64 位变体 AArch64。
引导加载程序Bootloader设备开机后最先运行的程序,负责硬件初始化并加载操作系统内核,解锁 Bootloader 是刷机的前提。
恢复模式RecoveryAndroid 设备的特殊启动模式,用于恢复出厂设置、刷入 OTA 更新包或自定义 ROM。
获取 Root 权限Rooting获取 Android 设备超级用户权限的过程,使用户可以完全控制系统,也是许多逆向工具的前提。
SELinux 策略SELinux (Security-Enhanced Linux)Android 使用的强制访问控制系统,限制进程对文件和资源的访问权限,增加安全性。
内容提供者Content ProviderAndroid 四大组件之一,提供跨进程的数据共享接口,常通过 URI 访问数据库或文件。
广播接收器Broadcast ReceiverAndroid 四大组件之一,用于接收和响应系统或应用发出的广播消息。
服务ServiceAndroid 四大组件之一,在后台执行长时间运行的操作,没有用户界面。
Intent 消息IntentAndroid 组件之间通信的消息对象,用于启动 Activity、Service 或发送广播,可携带数据。
应用沙箱App SandboxAndroid 为每个应用分配独立的 UID 和数据目录,通过 Linux 权限机制实现应用间的隔离。
权限模型Permission ModelAndroid 通过声明和授予权限来控制应用对敏感资源(相机、定位、存储等)的访问。
预编译AOT (Ahead-Of-Time Compilation)ART 在安装时将字节码预编译为机器码的技术,相比 JIT 提高了运行时性能但增加安装时间。
即时编译JIT (Just-In-Time Compilation)在程序运行时将字节码编译为机器码的技术,Android 7.0 后 ART 同时使用 AOT + JIT 的混合方案。
设备树Device Tree (DT/DTB)描述硬件配置信息的数据结构,内核通过它识别设备硬件,自定义内核时可能需要修改。
GKI 内核GKI (Generic Kernel Image)Google 推出的通用内核镜像,将内核分为 Google 维护的通用核心和厂商模块,简化内核更新流程。
Boot 镜像Boot Image (boot.img)Android 设备的启动镜像,包含内核、ramdisk 等组件,Magisk 和 KernelSU 通过修补 boot.img 实现 Root。
分区PartitionAndroid 设备存储的分区结构,常见的有 system、vendor、data、boot、recovery 等分区。
叠加文件系统OverlayFS允许在只读文件系统上叠加可写层的文件系统,Magisk 的 systemless 修改机制基于类似原理。
属性系统Property SystemAndroid 的全局键值对配置系统,通过 getprop/setprop 访问,常用于检查设备状态和编译信息。
应用签名App SigningAndroid 要求每个 APK 必须用开发者的私钥签名,签名信息存储在 META-INF 目录或 APK Signing Block 中。
DEX 字节码Dalvik BytecodeDalvik/ART 虚拟机执行的指令集,基于寄存器架构,与 Java 字节码(基于栈架构)不同。
ABI 接口ABI (Application Binary Interface)应用二进制接口,定义了二进制代码如何与系统交互,Android 支持 armeabi-v7a、arm64-v8a、x86、x86_64 等 ABI。
进程间通信IPC (Inter-Process Communication)不同进程之间交换数据和信号的机制,Android 中主要通过 Binder、Socket、共享内存等方式实现。
可信执行环境TEE (Trusted Execution Environment)处理器中与普通执行环境隔离的安全区域,用于保护敏感操作(如指纹验证、密钥存储)。

3. 加密与签名 (Cryptography & Signatures)

密码学算法、签名机制和安全认证相关的术语。

中文名称英文名称说明
高级加密标准AES (Advanced Encryption Standard)对称加密算法,使用 128/192/256 位密钥,是目前最广泛使用的对称加密标准。
DES 加密DES (Data Encryption Standard)早期的对称加密标准,因 56 位密钥过短已被淘汰,3DES 是其增强版本但也逐步退出使用。
RSA 算法RSA (Rivest-Shamir-Adleman)经典的非对称加密算法,基于大数分解难题,广泛用于数字签名和密钥交换。
椭圆曲线加密ECC (Elliptic Curve Cryptography)基于椭圆曲线数学的非对称加密体系,在相同安全强度下密钥比 RSA 短得多。
ECDSA 签名ECDSA (Elliptic Curve Digital Signature Algorithm)基于椭圆曲线的数字签名算法,常用于 HTTPS 证书和区块链签名。
消息认证码HMAC (Hash-based Message Authentication Code)基于哈希函数和密钥的消息认证码,用于验证数据完整性和来源真实性。
MD5 哈希MD5 (Message Digest 5)128 位哈希算法,因存在碰撞漏洞已不适合用于安全场景,但仍常见于文件校验和旧系统中。
SHA 哈希SHA (Secure Hash Algorithm)安全哈希算法家族,包括 SHA-1(已不安全)、SHA-256、SHA-512 等,用于完整性校验和数字签名。
CRC 校验CRC (Cyclic Redundancy Check)循环冗余校验,用于检测数据传输错误,不适合用于安全用途但在文件格式中非常常见。
对称加密Symmetric Encryption加密和解密使用同一密钥的加密方式,速度快,适合加密大量数据,如 AES、DES。
非对称加密Asymmetric Encryption使用公钥加密、私钥解密(或反之)的加密方式,用于密钥交换和数字签名,如 RSA、ECC。
数字签名Digital Signature使用私钥对数据摘要进行加密生成签名,任何人可用公钥验证,确保数据完整性和来源不可否认。
APK 签名APK SigningAndroid 应用必须经过签名才能安装,签名用于验证应用来源和完整性,包含 v1/v2/v3/v4 多种方案。
签名校验Signature Verification应用运行时检查自身签名是否被篡改的保护机制,常用于防止重打包和破解。
密钥库KeyStoreAndroid 提供的安全密钥存储系统,支持硬件级密钥保护(TEE/StrongBox),密钥不可导出。
基于时间的一次性密码TOTP (Time-based One-Time Password)基于当前时间和共享密钥生成一次性密码的算法,常用于双因素认证(如 Google Authenticator)。
基于计数器的一次性密码HOTP (HMAC-based One-Time Password)基于计数器和共享密钥生成一次性密码的算法,是 TOTP 的基础。
Base64 编码Base64将二进制数据转换为 ASCII 字符串的编码方式,常见于网络传输和配置文件中,注意它不是加密。
XOR 运算XOR (Exclusive OR)异或运算,最简单的加密原语,常在简单的加密、校验和混淆中使用。
白盒加密White-Box Cryptography将密钥嵌入到算法实现中的加密技术,即使攻击者可以观察算法执行过程也无法提取密钥。
密钥派生函数KDF (Key Derivation Function)从密码或主密钥派生出加密密钥的函数,如 PBKDF2、scrypt、Argon2,增加暴力破解难度。
分组密码模式Block Cipher Mode分组密码的工作模式,如 ECB、CBC、CTR、GCM 等,不同模式的安全性和性能特征不同。
初始化向量IV (Initialization Vector)加密时使用的随机值,确保相同明文在不同加密操作中产生不同密文,CBC 和 GCM 模式都需要 IV。
填充方式Padding将明文填充至分组密码要求的块长度的方法,常见的有 PKCS5/PKCS7 Padding 和 Zero Padding。
RC4 流密码RC4早期广泛使用的流加密算法,已被发现多个安全弱点,不推荐使用但在旧系统中仍可能遇到。
国密算法SM Series (SM2/SM3/SM4)中国国家密码管理局发布的商用密码算法,SM2 是非对称加密,SM3 是哈希算法,SM4 是对称加密。
证书签名方案APK Signature SchemeAndroid APK 签名机制的演进:v1(基于 JAR)、v2(全文件签名)、v3(支持密钥轮换)、v4(增量安装)。
密钥协商Key Exchange通信双方在不安全信道上协商出共享密钥的过程,如 Diffie-Hellman (DH) 和 ECDHE 算法。
随机数生成器RNG (Random Number Generator)生成随机数的组件,密码学安全的 RNG (CSPRNG) 是加密系统的基础,弱随机数会导致严重安全问题。
消息摘要Message Digest对任意长度数据计算出的固定长度哈希值,用于验证数据完整性,不可逆推出原始数据。
数字信封Digital Envelope结合对称加密和非对称加密的混合加密方案:用随机对称密钥加密数据,再用接收方公钥加密对称密钥。
盐值Salt在哈希计算前添加的随机数据,确保相同的明文产生不同的哈希值,防止彩虹表攻击。

4. Hook 与插桩 (Hooking & Instrumentation)

函数拦截、代码注入和动态修改程序行为相关的术语。

中文名称英文名称说明
挂钩/钩子Hook拦截函数调用、消息或事件的技术,用于监视或修改程序行为,是动态分析的核心手段。
内联钩子Inline Hook直接修改目标函数开头的指令,插入跳转指令到自定义代码,是 Native 层最常用的 Hook 方式。
PLT 钩子PLT Hook通过修改 GOT/PLT 表中的函数地址来拦截对外部库函数的调用,对同一 SO 内的调用无效。
跳板TrampolineHook 技术中用于保存原始指令并跳转回原函数继续执行的代码片段,确保原始功能不被破坏。
动态插桩Dynamic Binary Instrumentation (DBI)在程序运行时动态插入分析代码的技术,无需修改原始二进制文件,如 Frida、DynamoRIO。
静态插桩Static Binary Instrumentation (SBI)在程序执行前修改二进制文件以插入分析代码的技术,修改后的文件可独立运行。
Java 层 HookJava-level Hook通过替换 ART 虚拟机中的方法入口来拦截 Java/Kotlin 方法调用,如 Xposed、Frida 的 Java.use。
Native 层 HookNative-level Hook对 C/C++ 编译的 Native 代码(.so 文件)进行拦截,通常使用 Inline Hook 或 PLT Hook。
方法替换Method Swizzling在运行时将一个方法的实现替换为另一个方法,在 iOS/Objective-C 中尤为常见,Android 中也有类似机制。
代码注入Code Injection将自定义代码注入到目标进程中执行的技术,通常通过 ptrace、dlopen 或 LD_PRELOAD 实现。
ptrace 系统调用ptraceLinux 提供的进程跟踪系统调用,调试器通过它控制目标进程的执行、读写内存和寄存器。
进程注入Process Injection将代码或共享库加载到另一个正在运行的进程的地址空间中,是实现 Hook 的前提步骤。
LD_PRELOADLD_PRELOADLinux 环境变量,指定在所有其他共享库之前加载的库,可用于拦截标准库函数调用。
代理/拦截器InterceptorFrida 中用于拦截 Native 函数调用的 API,可在函数执行前后插入自定义逻辑。
替换Replacer完全替换目标函数实现的 Hook 方式,原始函数将不再被调用。
Stalker 追踪器StalkerFrida 提供的代码追踪引擎,可以追踪目标进程每一条执行的指令,用于代码覆盖率分析。
ART 方法入口ART Entry PointART 虚拟机中每个 Java 方法的执行入口指针,Hook 框架通过修改它来实现方法拦截。
系统调用钩子Syscall Hook拦截应用对 Linux 内核系统调用的技术,可在内核层面监控文件访问、网络通信等行为。
虚函数表钩子VTable Hook通过修改 C++ 对象的虚函数表指针来拦截虚函数调用的技术。
异常处理钩子Exception Hook通过设置硬件断点或修改异常处理机制来实现的 Hook 技术,比修改代码更隐蔽。
回调函数CallbackHook 触发时执行的自定义函数,分为 onEnter(函数执行前)和 onLeave(函数返回后)两种时机。
函数指针替换Function Pointer Replacement通过修改存储函数指针的内存位置来重定向函数调用的技术,适用于通过指针调用的场景。
代码覆盖率Code Coverage记录程序执行时哪些代码被实际运行的技术,Frida 的 Stalker 可用于收集覆盖率信息以辅助模糊测试。

5. 保护与混淆 (Protection & Obfuscation)

软件保护、代码混淆、反调试和加固相关的术语。

中文名称英文名称说明
代码混淆Obfuscation使代码难以理解但保持功能不变的技术,包括重命名、控制流扁平化、字符串加密等手段。
加壳/加固Packing / Hardening对 APK 进行保护处理,将原始 DEX 加密隐藏,运行时才解密加载,增加逆向分析难度。
脱壳Unpacking从加固的 APK 中还原出原始 DEX 文件的过程,常用方法包括内存 dump、Hook ClassLoader 等。
OLLVM 混淆OLLVM (Obfuscator-LLVM)基于 LLVM 编译器框架的开源代码混淆项目,支持控制流扁平化、虚假控制流、指令替换等。
控制流扁平化Control Flow Flattening (CFF)OLLVM 的核心混淆技术,将正常的控制流结构转化为 switch-case 分发器结构,严重增加分析难度。
虚假控制流Bogus Control Flow (BCF)在代码中插入永远不会执行的假分支,干扰分析者对真实逻辑的判断。
指令替换Instruction Substitution用功能等价但更复杂的指令序列替换简单指令,增加反汇编代码的阅读难度。
字符串加密String Encryption将程序中的明文字符串加密存储,运行时才解密使用,防止通过字符串搜索定位关键代码。
虚拟机保护VMP (Virtual Machine Protection)将原始代码转换为自定义字节码,并内置专用解释器来执行,是最强的代码保护技术之一。
花指令Junk Code / Dead Code插入不影响程序功能的无用指令或永远不执行的代码,用于干扰反汇编器和分析者。
反调试Anti-Debug检测程序是否正在被调试的保护技术,常通过检查 ptrace 状态、/proc/self/status、时间差等实现。
反 Root 检测Anti-Root Detection检测设备是否已获取 Root 权限的技术,常检查 su 二进制文件、Magisk 痕迹、系统属性等。
反 Hook 检测Anti-Hook Detection检测程序是否被 Hook 框架拦截的技术,常检查 Frida 端口、Xposed 特征、内存中的 Hook 痕迹。
反模拟器检测Anti-Emulator Detection检测应用是否运行在模拟器中的技术,常检查硬件属性、传感器数据、设备指纹等特征。
完整性校验Integrity Check应用运行时验证自身代码或资源是否被篡改的机制,常对 DEX、SO 文件计算哈希值并比对。
代码抽取Code Extraction / Function-level Packing将 DEX 中的方法体抽取并加密存储,运行时才恢复到内存中执行,比整体加壳更难脱壳。
ProGuard 混淆ProGuardAndroid 官方推荐的 Java 字节码混淆和优化工具,可进行类名/方法名重命名、无用代码删除等。
R8 编译器R8Google 推出的替代 ProGuard 的新一代代码缩减和混淆工具,已成为 Android 构建的默认工具。
名称混淆Name Obfuscation / Renaming将类名、方法名、变量名替换为无意义的短名称(如 a、b、c),最基础的混淆手段。
环境检测Environment Detection应用在运行时检查执行环境是否正常(非 Root、非模拟器、非调试模式等),是保护链的第一环。
反篡改Anti-Tampering应用在运行时验证自身代码、资源和签名的完整性,发现篡改后终止运行或上报服务器。
代码虚拟化Code VirtualizationVMP 的核心技术,将原始指令转换为自定义虚拟机的字节码,每次编译可生成不同的指令集。
混合保护Multi-layered Protection同时使用多种保护技术(加壳 + 混淆 + 反调试 + VMP)构建多层防御体系,增加破解成本。
运行时解密Runtime Decryption将关键代码或数据加密存储,仅在需要时解密到内存中执行或使用,执行后再清除明文。
调试器检测Debugger Detection检测是否有调试器附加到进程的技术,常通过 TracerPid、断点扫描、时间检测等方式实现。
时间检测Timing Check通过测量代码执行的时间差来检测调试行为,因为单步调试会显著增加执行时间。
Frida 检测Frida Detection检测 Frida 是否注入到进程中的技术,常检查默认端口 (27042)、内存特征字符串、线程名称等。
SafetyNet / Play IntegritySafetyNet / Play Integrity APIGoogle 提供的设备完整性检测 API,可验证设备是否已 Root、Bootloader 是否已解锁等。

6. 网络与协议 (Network & Protocols)

网络通信、安全协议和流量分析相关的术语。

中文名称英文名称说明
传输层安全协议TLS (Transport Layer Security)为网络通信提供加密、身份认证和数据完整性的安全协议,HTTPS 的基础,是 SSL 的后继版本。
安全套接字层SSL (Secure Sockets Layer)TLS 的前身,已被废弃但"SSL"一词仍被广泛用于指代 TLS 加密连接。
证书锁定SSL/Certificate Pinning应用内预置服务器证书或公钥的指纹,仅信任特定证书而非系统证书链,防止中间人攻击。
中间人攻击MITM (Man-In-The-Middle)攻击者在通信双方之间拦截和修改数据的攻击方式,是抓包分析 HTTPS 流量的核心原理。
代理服务器Proxy位于客户端和服务器之间的中介,用于转发、监视或修改网络请求,逆向中常用于抓包分析。
数字证书Certificate (X.509)由证书颁发机构 (CA) 签发的电子文件,用于证明服务器或客户端的身份,包含公钥和持有者信息。
证书颁发机构CA (Certificate Authority)签发和管理数字证书的受信任机构,浏览器和操作系统预装了一组受信任 CA 的根证书。
自签名证书Self-Signed Certificate未经受信任 CA 签发的证书,由使用者自己签发,用于测试和抓包场景。
系统证书存储System Certificate StoreAndroid 系统存储受信任根证书的位置(/system/etc/security/cacerts/),Android 7+ 默认不信任用户安装的证书。
抓包Packet Capture / Traffic Sniffing截获和记录网络数据包的过程,用于分析应用的网络通信协议和数据格式。
HTTP 协议HTTP (HyperText Transfer Protocol)超文本传输协议,Web 通信的基础协议,明文传输,易于分析但不安全。
HTTPS 协议HTTPS (HTTP Secure)在 HTTP 基础上使用 TLS 加密的安全协议,是现代应用网络通信的标准。
WebSocket 协议WebSocket在单个 TCP 连接上提供全双工通信的协议,常用于实时消息推送和聊天功能。
gRPC 协议gRPC (Google Remote Procedure Call)Google 开发的高性能 RPC 框架,使用 Protocol Buffers 作为序列化格式和 HTTP/2 作为传输协议。
Protocol BuffersProtobuf (Protocol Buffers)Google 开发的高效二进制序列化格式,比 JSON 更紧凑和快速,需要 .proto 定义文件才能正确解析。
JSON 格式JSON (JavaScript Object Notation)轻量级的文本数据交换格式,广泛用于 Web API 和移动应用的数据传输。
请求签名Request Signing对 API 请求参数和时间戳等计算签名的机制,服务器通过验证签名来防止请求被篡改或重放。
请求重放Replay Attack将截获的有效请求重新发送以欺骗服务器的攻击方式,通过时间戳和 nonce 可以防御。
OkHttp 客户端OkHttpAndroid 平台最流行的 HTTP 客户端库,拦截其 Interceptor 链是分析网络请求的常用方法。
Retrofit 框架Retrofit基于 OkHttp 的类型安全 HTTP 客户端库,通过注解定义 API 接口,逆向时分析其接口定义可快速了解所有 API。
DNS 解析DNS (Domain Name System)将域名转换为 IP 地址的系统,应用可能使用自定义 DNS 或 DoH (DNS over HTTPS) 来防止 DNS 劫持。
SNI 字段SNI (Server Name Indication)TLS 握手时客户端发送的目标域名字段,明文传输,可被用于识别和过滤 HTTPS 流量。
HTTP/2 协议HTTP/2HTTP 协议的第二个主要版本,支持多路复用、头部压缩和服务器推送,抓包分析比 HTTP/1.1 更复杂。
QUIC 协议QUIC (Quick UDP Internet Connections)基于 UDP 的传输层协议,HTTP/3 的基础,因加密传输和 UDP 通道使传统抓包工具较难拦截。
双向认证Mutual TLS (mTLS)客户端和服务器都需要提供证书的双向认证方式,比单向 SSL Pinning 更难绕过。
网络安全配置Network Security ConfigAndroid 7.0 引入的 XML 配置文件,允许应用声明网络安全策略(如信任的 CA、域名 Pinning)。

7. 工具名称 (Tool Names)

逆向工程中常用的软件工具和框架。

中文名称英文名称说明
Frida 框架Frida跨平台的动态插桩工具包,通过 JavaScript API 在运行时监视和修改应用行为,支持 Android/iOS/Windows/macOS。
Objection 工具Objection基于 Frida 的运行时移动安全探索工具,提供了许多开箱即用的功能,无需编写脚本即可进行常见分析。
r2frida 插件r2frida将 radare2 和 Frida 结合的插件,可在 radare2 命令行中使用 Frida 的动态分析能力。
Xposed 框架Xposed Framework经典的 Android Hook 框架,通过替换 app_process 来拦截应用和系统的 Java 方法调用。
LSPosed 框架LSPosed基于 Riru/Zygisk 的现代 Xposed 框架实现,支持 Android 8.0 以上版本,可针对特定应用生效。
IDA Pro 反汇编器IDA Pro (Interactive DisAssembler)业界标准的交互式反汇编器和调试器,支持多种处理器架构,Hex-Rays 反编译器是其核心插件。
Ghidra 分析框架Ghidra美国 NSA 开源的软件逆向工程框架,提供反汇编、反编译、脚本自动化等功能,是 IDA 的免费替代品。
radare2 框架radare2 (r2)开源的命令行逆向工程框架,支持反汇编、调试、二进制修补等功能,以强大的命令行接口著称。
JADX 反编译器JADX将 Android DEX/APK 文件反编译为 Java 源代码的工具,提供 GUI 和命令行两种模式。
JEB 反编译器JEB Decompiler商业级 Android 反编译器和调试器,支持 DEX 和 Native 代码分析,反编译质量优秀。
apktool 工具apktool用于反编译和重打包 APK 的工具,可以解码资源文件和反汇编 Smali 代码。
dex2jar 工具dex2jar将 DEX 文件转换为 Java JAR 文件的工具集,常与 JD-GUI 配合使用进行反编译分析。
Magisk 框架Magisk开源的 Android Root 解决方案,以 Systemless 方式挂载修改,不修改系统分区,支持 MagiskHide 隐藏 Root。
KernelSU 框架KernelSU基于内核的 Android Root 方案,在内核层面实现 su 权限管理,比 Magisk 更难被检测。
Riru 模块Riru通过注入 Zygote 进程来实现模块化功能扩展的框架,是 LSPosed 等模块的基础(已逐步被 Zygisk 取代)。
Zygisk 注入ZygiskMagisk 内置的 Zygote 注入机制,替代 Riru 成为新的模块加载方式,与 Magisk 深度集成。
unidbg 模拟器unidbg基于 Unicorn 引擎的 Android Native 函数模拟执行框架,可在 PC 上脱离 Android 环境运行 SO 中的函数。
Unicorn 引擎Unicorn Engine轻量级的多架构 CPU 模拟器引擎,支持 ARM/x86/MIPS 等,常用于模拟执行二进制代码片段。
Charles 抓包Charles Proxy跨平台的 HTTP/HTTPS 抓包工具,提供图形界面,可拦截、查看和修改网络请求。
mitmproxy 抓包mitmproxy开源的交互式 HTTPS 代理工具,支持命令行和 Web 界面,可通过 Python 脚本扩展功能。
Burp Suite 工具Burp Suite业界标准的 Web 安全测试平台,功能强大的拦截代理,常用于 API 分析和安全测试。
Wireshark 抓包Wireshark网络协议分析器,可捕获和分析网络层数据包,支持数百种协议的深度解析。
Android StudioAndroid StudioGoogle 官方的 Android 开发 IDE,内置了调试器、Profiler、APK 分析器等逆向分析中也有用的工具。
LLDB 调试器LLDBLLVM 项目的调试器,Android NDK 默认使用的 Native 代码调试工具。
GDB 调试器GDB (GNU Debugger)经典的 GNU 调试器,支持远程调试 Android Native 代码,常配合 gdbserver 使用。
Frida-tools 工具集frida-toolsFrida 官方提供的命令行工具集,包括 frida-ps、frida-trace、frida-discover 等常用工具。
Fridump 工具Fridump基于 Frida 的内存转储工具,可导出目标进程的内存内容用于搜索敏感数据。
Cydia SubstrateCydia Substrate早期的移动平台 Hook 框架,最初用于 iOS 越狱插件开发,也曾支持 Android。
010 Editor010 Editor专业的十六进制/二进制编辑器,支持 Binary Template 语法以结构化方式解析二进制文件格式。
Capstone 引擎Capstone轻量级的多架构反汇编引擎库,支持 ARM/x86/MIPS 等,常被集成到其他逆向工具中。
Keystone 引擎Keystone轻量级的多架构汇编引擎库,Capstone 的互补工具,可将汇编代码编译为机器码。
Drozer 工具DrozerAndroid 安全评估框架,用于发现应用的攻击面,测试 Activity、Content Provider 等组件的安全性。
QEMU 模拟器QEMU开源的通用处理器模拟器,Android 模拟器(AVD)基于 QEMU,也可用于运行其他架构的二进制文件。
CyberChef 工具CyberChefGCHQ 开源的数据转换和分析工具,提供 Web 界面,可方便地进行编码、解码、加解密等操作。

8. 数据采集 (Data Collection & Scraping)

数据采集、爬虫技术和反爬对抗相关的术语。

中文名称英文名称说明
网络爬虫Web Crawler / Spider自动浏览和抓取网页内容的程序,按照链接结构系统性地遍历网站。
数据抓取Scraping / Data Scraping从网页或应用中自动提取结构化数据的技术,通常需要解析 HTML 或 API 响应。
API 采集API Scraping直接调用应用或网站的后端 API 接口来获取数据,效率高于页面抓取,常需要逆向签名算法。
代理池Proxy Pool维护大量代理 IP 地址的资源池,用于分散请求来源以避免 IP 被封锁。
IP 轮换IP Rotation在多个代理 IP 之间自动切换,使每个请求来自不同的 IP 地址,降低被检测的风险。
频率限制Rate Limiting服务器限制单个客户端在一定时间内的请求次数,是最基本的反爬措施之一。
验证码CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)用于区分人类用户和自动程序的挑战-响应测试,包括图片验证码、滑块验证码、行为验证等。
指纹检测Fingerprinting通过收集设备/浏览器的各种特征信息(UA、分辨率、Canvas、WebGL 等)来唯一标识用户的技术。
设备指纹Device Fingerprint基于设备硬件和软件特征(IMEI、Android ID、传感器等)生成的唯一标识符,用于追踪和风控。
浏览器指纹Browser Fingerprint通过 Canvas、WebGL、字体列表、插件等浏览器特征生成的唯一标识,无需 Cookie 即可追踪用户。
User-Agent 标识User-Agent (UA)HTTP 请求头中标识客户端软件信息的字段,反爬系统常通过 UA 检测异常请求。
Cookie 管理Cookie服务器存储在客户端的小型数据文件,用于维持会话状态和用户标识,爬虫需要正确管理 Cookie。
反爬虫机制Anti-Scraping / Anti-Bot网站或应用用于检测和阻止自动化数据采集的各种防御措施的统称。
风险控制Risk Control (风控)服务器端通过分析用户行为模式、设备信息、请求频率等来识别异常行为并采取限制措施。
请求头伪装Header Spoofing修改 HTTP 请求头(如 User-Agent、Referer 等)使请求看起来来自正常浏览器或应用。
Selenium 自动化Selenium浏览器自动化测试框架,可模拟真实用户操作网页,常用于需要 JavaScript 渲染的页面数据采集。
Appium 自动化Appium移动应用自动化测试框架,支持 Android/iOS 应用的自动化操作,可用于 App 数据采集。
adb 自动化ADB Automation通过 ADB 命令模拟触摸、滑动、输入等操作来自动化控制 Android 设备,是简易的 App 数据采集方式。
协议还原Protocol Reverse Engineering通过抓包分析还原应用的通信协议细节(加密方式、签名算法、参数含义),是 API 采集的关键步骤。
接口签名还原Signature Algorithm Reverse逆向分析应用的请求签名生成算法,使爬虫能够构造出服务器可接受的合法签名。
无头浏览器Headless Browser没有图形界面的浏览器实例(如 Headless Chrome、Puppeteer),可在后台自动化执行网页操作。
会话管理Session Management在多次请求之间维护登录状态和上下文信息,爬虫需要正确处理 Token 刷新和会话过期。
数据清洗Data Cleaning对采集到的原始数据进行去重、格式化、纠错等处理,使其达到可用的质量标准。
OCR 识别OCR (Optical Character Recognition)光学字符识别技术,用于将图片中的文字转换为可编辑文本,常用于识别图片验证码。
滑块验证Slider CAPTCHA需要用户拖动滑块到正确位置的验证码类型,自动化破解需要图像识别和轨迹模拟。
行为验证Behavioral Verification通过分析用户的鼠标轨迹、键盘输入模式、触摸手势等行为特征来判断是否为真人操作。

9. 其他常用术语 (Other Common Terms)

不属于以上分类但在逆向工程中经常遇到的术语。

中文名称英文名称说明
重打包Repackaging反编译 APK 后修改代码或资源,再重新签名打包为可安装的 APK 的过程。
二次打包检测Repackaging Detection应用检测自身是否被重新打包和签名的保护机制,通常通过校验签名证书实现。
内存转储Memory Dump将进程运行时的内存内容保存到文件中,用于分析加密数据、脱壳或提取运行时信息。
类加载器ClassLoaderJava/Android 中负责加载类的组件,加固方案常自定义 ClassLoader 来实现 DEX 的动态解密加载。
反射ReflectionJava 的一种机制,允许在运行时检查和操作类、方法和字段,常用于绕过访问限制或调用隐藏 API。
序列化Serialization将对象转换为字节流的过程,用于存储或网络传输,反序列化是其逆过程。
Native 方法注册RegisterNativesJNI 中动态注册 Native 方法与 Java 方法映射关系的函数,静态注册则通过固定的命名规则实现。
系统属性System PropertiesAndroid 系统的键值对配置(如 ro.build.fingerprint),通过 getprop 命令读取,常被检测机制引用。
Logcat 日志LogcatAndroid 系统的日志系统,记录应用和系统的运行日志,adb logcat 是调试和分析时的重要信息来源。
FART 脱壳FART (ART Runtime Unpacker)基于 ART 主动调用原理的 Android 脱壳工具,通过修改系统源码实现对加固应用的自动化脱壳。
DexDump 脱壳DexDump从运行中的进程内存中提取 DEX 文件的工具,常基于 Frida 实现,用于脱壳加固应用。
IL2CPP 逆向IL2CPP (Intermediate Language To C++)Unity 游戏引擎的脚本后端,将 C# 代码编译为 C++,全局元数据文件 (global-metadata.dat) 是逆向分析的关键。
so 加载SO Loading (dlopen/dlsym)Android 中通过 dlopen 加载动态库、dlsym 查找符号的过程,Hook 这些函数可监控库加载行为。
init_array.init_array SectionELF 文件中在 main 函数执行前自动调用的初始化函数数组,加固方案常在此处执行解密逻辑。
JNI_OnLoadJNI_OnLoad共享库被 Java 层 System.loadLibrary 加载时自动调用的函数,常用于动态注册 Native 方法和执行初始化。
maps 文件/proc/self/mapsLinux 进程的内存映射文件,显示进程的所有内存区域和加载的共享库,是分析内存布局的重要依据。
Dex 优化Dexopt / dex2oatAndroid 系统将 DEX 编译为优化格式(ODEX/OAT)的过程,dex2oat 是 ART 使用的编译工具。
方法分辨率Method ResolutionART 根据方法签名和类层次关系查找实际要调用的方法实现的过程。
Linker 链接器Linker (/system/bin/linker64)Android 系统的动态链接器,负责在运行时加载和链接共享库(SO 文件),Hook linker 可监控库加载。
脱壳点Unpacking Point在加固应用执行过程中,原始 DEX 已被解密且完整存在于内存中的时机,是执行内存 dump 的最佳时机。
主动调用Active Invocation一种脱壳技术,通过主动调用类的所有方法来触发 ART 对方法体的还原,从而获取完整的 DEX 数据。
Smali 注入Smali Injection在反编译后的 Smali 代码中插入自定义逻辑(如日志打印),然后重新打包运行以辅助分析。
模糊测试Fuzzing向程序输入大量随机或变异的数据以触发崩溃和异常行为的自动化测试技术,用于发现安全漏洞。
符号执行Symbolic Execution使用符号值(而非具体值)执行程序以探索所有可能路径的分析技术,可用于自动化求解混淆后的逻辑。
CTF 竞赛CTF (Capture The Flag)信息安全领域的竞赛形式,参赛者需要通过逆向工程、漏洞利用等技术找到隐藏的 Flag。
PoC 验证PoC (Proof of Concept)漏洞概念验证代码,用于证明安全漏洞的存在和可利用性。
CVE 编号CVE (Common Vulnerabilities and Exposures)公开已知安全漏洞的统一标识编号系统,如 CVE-2023-XXXXX。

相关内容

如果这篇文章对你有帮助,请我喝杯咖啡吧~
+5 支付宝支付宝
+5 微信微信