什么样的技术可以实现对一个 APK 完全加密并能被系统正常读取?

2021-12-22 21:01:18 +08:00
 DevHuaJi

最近比较闲,把以前用过的步步高家教机找出来,重拾了一下以前的爱好

步步高系统是基于安卓定制的,但它的所有系统应用都是加密的,使用的是自己的加密格式:BPK 。如果一个软件的安装包不满足这个加密格式,就无法在步步高系统内通过软件包安装程序安装这个软件

想要绕开这个检测机制有两个方法:

1 、当前应用已经存在,需要升级这个应用
2 、通过 isBBKEncrypted() 的验证 (见下图)

按照目前的了解,BPK 是步步高私有的一种格式,只能被他的机器读取,如果在正常的安卓手机上安装,会直接报错解析失败,7-Zip 也无法直接解压它

此类应用在系统镜像内就是加密的,也就是说并不是开机之后才加密它们

同时,步步高的系统可以兼容正常 APK 与 BPK ,使用 pm install 命令可以正常安装。而普通手机则会报错

反编译 pm.odex 并未发现解密相关内容,和正常安卓系统的一致


目前我已经可以实现还原一个 BPK 成为正常 APK ,还原前后包里的内容(作为 Zip 解压)是一致的。通过十六进制比对,它们有如下不同:

42 50 4B 01 -> 50 4B 01 02
42 50 4B 03 -> 50 4B 03 04
42 50 4B 05 -> 50 4B 05 06
42 50 4B 07 -> 50 4B 07 08

其应用安装程序会检测头部是否为 42 50 4B 03,如果不是,直接跳出安装失败

直接修改 APK 的头部会导致解析失败


目前已知:


目前想知道:

878 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823846

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX