我用 AI 对四个真实上线的包做了一轮静态加固强度实测(起点读书/360、123云盘/爱加密、汽车街/梆梆、凤凰视频/乐固)。这篇先把测评结果摆出来,再附一套做静态强度自测的 Checklist,建议收藏备查。
一、测评标准:静态强度看什么
就一条能落地的:业务代码(DEX)藏没藏住。 加固壳的第一目标是让你光靠静态分析拿不到业务逻辑,所以外层 classes.dex 还能不能看到业务类,是最直接的强度信号;壳自己泄露多少(ELF 节区、动态符号、hook 框架名)算第二层。
二、实测结果对比
四个包按上面的标准过下来:
| 样本 / 加固 | 外层 classes.dex | 业务类可见 | 壳信息残留 | 静态藏得深浅 |
|---|---|---|---|---|
| 汽车街 / 梆梆 | 30MB(正经 DEX 19KB 就断,尾部追加数据) | 只剩 5 个壳类 | 少 | 最深 |
| 123云盘 / 爱加密 | 14KB stub | 只剩 4 个壳类 | 少,载荷独立拆分 | 最深 |
| 凤凰视频 / 乐固 | 80 多 KB(3 个壳 dex) | 只剩包装类 | 偏多(节区/符号/hook 名) | 深,但壳好摸 |
| 起点读书 / 360 | 12 个 dex、七万多类 | com.qidian.* 大面积可见 | — | 最浅 |
排序:梆梆 ≈ 爱加密 > 腾讯乐固 > 360。
有一条得说清楚,别读歪:360 排最后 ≠ 360 加固最弱。 它业务 DEX 可见,是因为这个包更像只对敏感方法、native 逻辑做定点保护,没做整包隐藏,壳本身(libjiagu_vip)裁得并不差。准确说法是这个包"静态藏得最少"。
三、给你自己的包做强度自测 Checklist
同一套标准,拿去测你自己 App 加固后的包,判断这层加固到底顶不顶用:
- 解压看外层
classes.dex大小:只有几十 KB → 大概率是壳 stub;几 MB 起 → 可能没做整包隐藏 - jadx 拖进去搜自己的业务包名
com.yourcompany.*:- 搜不到、只剩壳类 → 业务 DEX 藏住了 ✅
- 大片业务类直接可见 → 静态基本是漏的(或只做了定点保护)⚠️
- 看壳 SO 是否 stripped、有没有留一堆动态符号和 hook 框架名(残留越多,壳自身暴露面越大)
- 别只信加固平台回的那句"加固完成",上线前自己走一遍这套自测
命令示例:
# 外层 dex 布局 + 壳 SO
unzip -l app.apk | grep -E 'classes.*\.dex|lib/.*\.so'
# Application 入口类(androguard)
python3 -c "from androguard.core.apk import APK; a=APK('app.apk'); print(a.get_attribute_value('application','name'))"
四、边界
这套测评只算静态这一层——拿到包、第一轮静态分析能看到多少。真正难不难脱还得看动态:Frida 附加、内存 dump、重放是另一本账,业务代码藏得再干净,运行时长期以明文躺内存里照样能被捞。
完整的测评流程、每个包的详细拆解和数据,放在字节暗面主站那篇里了(含可复现全流程),想深挖的可以去看,或搜「字节暗面 加固强度对比」。