百趣云
百趣云的博客
🔖脱壳
比 dex 加密更狠的防护普通加固(360/梆梆/乐固)保护的是 dex 文件——运行时解密加载,dump 内存就能拿到明文。但 dex2c 和 VMP 加固玩的是另一个维度:直接把 Java 方法翻译成 native 代码,dex 里只剩一个空壳方法(native 声明或 throw 占位),真实逻辑编译进了 SO。dump 出 dex 也没用——方法体是空的。这就是为什么这类加固被称为"脱壳的终点"。识别:怎么判断中招了jadx 打开脱壳后的 dex,看到这些特征就是 dex2c/VMP:// 特征1:方法体是 native 声明,但 Java 层从没这样写过
public static
乐固的特点:懒加载与分片解密腾讯乐固(legu)的识别特征:入口 com.tencent.StubShell.TxAppEntry,assets 里有 libshell.so、libshella-x.so 等。它和 360/梆梆最大的不同是解密策略:乐固不是启动时一次性解密全部 dex,而是按需解密、分片加载——用到哪个类才解密哪部分。这个差异决定了脱壳策略:启动后立刻 dump,只能拿到不完整的 dex;必须把 App 的主要功能都点一遍,触发所有类的加载,再 dump。正确的脱壳流程第一步:spawn 启动,绕过反调试frida -U -f com.target.app -l dump.j
梆梆的特征与防护思路梆梆加固(bangcle)的识别特征:入口是 com.secneo.apkwrapper.ApplicationWrapper 或 MyWrapperProxyApplication,assets 里有 libsecexe.so / libsecmain.so。它的防护比 360 更"黏"一点——除了 dex 加密,还有反调试、模拟器检测、dex 加载点混淆的组合拳。脱壳前先过反调试,否则 Frida 一 attach 就闪退。姿势零:先绕过反调试梆梆的反调试常见手段:检测 TracerPid、检测 frida 端口(27042)、检测 frida-agent 的内存特征。
先认清壳的结构360 加固(jiagu)的核心思路:原 dex 加密后藏在壳 dex 的资源/资产里,运行时壳先启动,解密原 dex 并通过自定义 ClassLoader 加载。脱壳的本质就是等它解密加载完成后,从内存里把明文 dex 抠出来。判断是不是 360 加固:jadx 打开 APK,入口 Application 是 com.stub.StubApp,assets 里有 libjiagu.so / libjiagu_a64.so,基本实锤。脱壳时机:等"解密完成"这个窗口壳的工作流程:StubApp.attachBaseContext → 解密 dex → 替换 ClassLoader
为什么 iOS 逆向第一步是砸壳App Store 下载的 IPA 里,二进制被苹果的 FairPlay DRM 加密——直接拖进 IDA/Hopper 看到的代码段全是密文,无法静态分析。砸壳(decrypt)的本质:利用系统加载器解密后的内存镜像,把明文 dump 出来重打包。前提:一台越狱设备(iOS 13-15 的 checkra1n/palera1n 时代设备最顺手)。frida-ios-dump 标准流程# 1. 设备上起 frida-server(iOS 版),USB 连接
# 2. 电脑上
pip install frida-ios-dump
cd frida-ios-dump