|
|
本帖最后由 hehua 于 2026-4-28 15:32 编辑
### 整体解密流程概览
整个流程可以看作一个“脱壳”过程,其核心思想是“套娃”:一个最外层的、简单的“壳”程序负责解密和加载内层真正的、复杂的“肉”程序。
```mermaid
flowchart TD
A[应用启动] --> B[执行壳DEX<br>初始化]
B --> C[加载 libjiagu_vip.so]
C --> D[Native 层接管<br>JNI_OnLoad]
D --> E{内存解密<br>原始DEX}
E --> F[构建内存DexClassLoader]
F --> G[反射设置<br>Application/类加载器]
G --> H[跳转至真实App逻辑]
```
---
### 详细步骤分析
#### **阶段一:壳的启动 - Application 替换**
1. **AndroidManifest.xml 中的陷阱**
* 发布出去的 APK,其 `AndroidManifest.xml` 中声明的 `Application` 类并不是你源代码中的那个(例如 `com.example.MyApp`),而是加固商提供的一个 `StubApplication`(壳代理Application),例如 `com.shell.ShellApplication`。
2. **壳 Application 初始化**
* 当系统启动应用时,首先创建并初始化的是这个 `ShellApplication`。
* 在 `ShellApplication` 的 `attachBaseContext(Context)` 和 `onCreate()` 方法中,会进行至关重要的准备工作。
#### **阶段二:Native 层接管 - SO 库加载与解密核心**
3. **加载加固 SO 库**
* `ShellApplication` 在 `attachBaseContext` 中会调用 `System.loadLibrary("jiagu_vip")`,从而加载 `libjiagu_vip.so`。
|
|