DEX 拆出来以后,我把反编译源码恢复成了能跑的 Android 工程
上一篇文章里,我处理了一份 360 加固风格的 Android APK。静态 JADX 只能看到 6 个 Java 文件,业务代码要等应用运行起来以后,再从进程内存里找。最后拿到 11 份 DEX 候选,筛出 6 份相关文件一起反编译,JADX 总共生成约 18,027 个 Java 文件,目标业务包里有 613 个。
当时文章停在“代码已经可以阅读”。我还特意留了一句,如果准备修改后重新构建,相关方法必须继续回到 smali 或字节码里核验。
这次真的往下做了。
最后的结果是一套新的 Android 模块。它可以和原应用同时安装,能够从干净目录构建,在 Android 14 模拟器上清数据冷启动,显示协议弹窗,初始化本地数据库,再进入记录、总结、计划和统计等核心页面。总结编辑器也完成了输入、复制、清空、粘贴和保存回归。最后又在一台 Android 真机上同时安装原版与恢复版,两个包都保留,恢复版能够冷启动到系统权限页。
它依然有清楚的缺口。56 个外围 Activity 的入口还保留着壳层 native 声明,账号、支付、广告、推送和云服务也没有完整恢复。所以本文里的“能跑”,指核心离线功能已经能够独立运行。它不等于拿回了原始工程,更不等于整个应用已经恢复完整。
上一篇解决的是怎样从运行中的加固 APK 抓回业务 DEX。本文从那些 DEX 的反编译目录开始,讲讲后面的麻烦。
上一篇文章在这里。