360加固DEX解密技术深度剖析:从动态Hook到ELF修复实战
1. 360加固技术概览与逆向工程准备
360加固作为国内主流Android应用保护方案,其核心技术架构采用多层防护机制。在逆向分析过程中,我们需要重点关注以下几个核心组件:
- Java层入口:
com.stub.StubApp类作为应用启动入口 - Native层保护:
libjiagu.so系列动态库实现核心解密逻辑 - DEX保护机制:原始DEX被加密存储在assets或classes.dex尾部
1.1 逆向分析环境搭建
进行360加固逆向需要准备以下工具链:
| 工具类别 | 推荐工具 | 主要用途 |
|---|---|---|
| 动态调试工具 | Frida、IDA Pro | 运行时Hook和指令级分析 |
| 静态分析工具 | JADX、Ghidra | 反编译Java和Native代码 |
| 文件修复工具 | SoFixer、010 Editor | ELF文件结构修复 |
| 脚本支持 | Python、JavaScript | 自动化分析脚本开发 |
关键配置技巧:
# Frida脚本基础模板
import frida
def on_message(message, data):
print(message)
device = frida.get_usb_device()
pid = device.spawn(["com.target.app"])
session = device.attach(pid)
with open("hook.js") as f:
script = session.create_script(f.read())
script.on("message", on_message)
script.load()
device.resume(pid)
1.2 加固特征识别
识别360加固应用的典型特征:
-
Manifest标志:
- 入口Activity被替换为
com.stub.StubApp - 存在
android:extractNativeLibs="false"属性
- 入口Activity被替换为
-
文件结构特征:
- assets目录包含
libjiagu_<arch>.so文件 - classes.dex大小异常(通常包含加密数据)
- assets目录包含
-
运行时行为:
- 早期加载多个so文件
- 敏感操作通过JNI桥接实现
2. 动态Hook关键技术实现
2.1 Frida框架深度应用
针对360加固的有效Hook需要解决以下技术难点:
反调试对抗方案:
// 反调试检测绕过技巧
Interceptor.attach(Module.findExportByName(null, "ptrace"), {
onEnter: function(args) {
this.returnValue = 0;
}
});
// maps文件伪装实现
const fake_maps = "/data/local/tmp/fake_maps";
Interceptor.replace(Module.findExportByName(null, "open"),
new NativeCallback(function(pathname, flags) {
if (pathname.readCString().includes("maps")) {
return open(fake_maps, flags);
}
return open(pathname, flags);
}, "int", ["pointer", "int"])
);
2.2 关键函数定位技术
通过分层Hook

&spm=1001.2101.3001.5002&articleId=159539969&d=1&t=3&u=ddbab7bd14da48d8bb3055c929bc0ffd)
461

被折叠的 条评论
为什么被折叠?



