一直想做一次几家加固的静态强度横评,一直嫌手撸 readelf、strings、数类表太琐碎。这次干脆让 AI 上:四个真实上线的包(起点读书/360、123云盘/爱加密、汽车街/梆梆、凤凰视频/乐固)交给它,解包、解 manifest、遍历 dex、算熵值、扫 ELF,基础数据它出,我做复核和判断。这篇复盘一下这次测评------怎么比的、结果怎样、过程里哪些地方出乎意料。
测评怎么比:就看业务代码藏没藏住
静态强度这东西,落到能比的标准其实就一条:业务代码(DEX)藏没藏住。 加固壳的第一目标就是让你光靠静态分析拿不到业务逻辑,那衡量它强不强,最直接的就是看外层 classes.dex 里还能不能翻出应用自己的业务类。四个包都按这个过,另外再看一眼壳 SO 自己泄露了多少。
测评结果:四家藏得深浅,差得挺明显
- 汽车街 / 梆梆 :藏得最彻底。
classes.dex号称 30MB,但合法 DEX 结构 19KB 就断了,后面全是尾部追加的自定义数据,标准解析器只读得出 5 个壳类,业务类整体不可见。 - 123云盘 / 爱加密 :同样藏住,载荷拆得更规整。外层壳 DEX 才 14KB、4 个壳类,业务全塞进
ijiami.ajm、ijiami.dat两个高熵容器。 - 凤凰视频 / 乐固 :业务 DEX 也藏住了(塞在
0OO...容器里),但壳自己留的信息偏多------arm64 壳还保着 25 个 ELF 节区、178 个动态符号,xhook、shadowhook这些名字直接能看到。DEX 藏住了,壳入口相对好摸。 - 起点读书 / 360 :这个包业务 DEX 大面积可见,12 个 dex、七万多个类,
com.qidian.*直接摊开。
就"静态藏 DEX"这条排下来,大致是:梆梆 ≈ 爱加密 > 腾讯乐固 > 360。
| 样本 / 加固 | 业务类可见 | 壳信息残留 | 静态藏得深浅 |
|---|---|---|---|
| 汽车街 / 梆梆 | 只剩 5 个壳类 | 少 | 最深 |
| 123云盘 / 爱加密 | 只剩 4 个壳类 | 少,载荷独立拆分 | 最深 |
| 凤凰视频 / 乐固 | 只剩包装类 | 偏多 | 深,但壳好摸 |
| 起点读书 / 360 | 七万多业务类 | --- | 最浅 |
过程里几个出乎意料的地方
- 360 排最后,一开始我以为它加固弱 ,细看才反应过来不是这么回事。它业务 DEX 可见,是因为这个包更像只对敏感方法、native 逻辑做定点保护,没做整包隐藏------壳 SO(
libjiagu_vip)本身裁得并不差。测评里这种"可见 ≠ 弱"最容易读歪,所以我在结论里特意标了一句:准确说是它"静态藏得最少",不是技术差。 - 选样本时踩了个小坑 :中途我拿应用宝、凤凰视频极速版来备选,本以为腾讯自家肯定上乐固,拆开发现这俩根本没套壳,
classes.dex是真实的、jadx 直接看业务类。大厂旗舰常走自研混淆,不套商业壳------这俩就没进正式测评,但挺说明问题。 - 同一个"凤凰视频",主版本和极速版还不一样 :主版本(
com.ifeng.newvideo)套了乐固,极速版(com.ifext.newvideo)反倒裸奔,包名都换了。选测评样本得认包名,认 App 名会选错。
AI 干这活的体感
以前把 APK 丢给模型,它顶多按文件名猜个壳、解释两行 strings。这次不一样------配上本地工具,它能自己解包、读 DEX header、统计类表、算每块熵值、看 ELF 节区,再把散的特征串成一份完整记录。基础数据基本它出,我做的是复核厂商、盯异常数、定判断口径。体力活省了一大截,但"这是没加固还是定点保护"这种判断还得人来拍板------工具给数据,结论给人。
一点说明
这次测评只算静态这一层,也就是"拿到包、第一轮静态分析能看到多少"。真正难不难脱还得看动态(Frida、内存 dump、重放),那是另一本账。完整的测评数据、每个包的详细拆解和可复现流程,我整理在字节暗面主站那篇里了,这篇是复盘,就不铺开。