V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
DevHuaJi
V2EX  ›  问与答

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

  •  1
     
  •   DevHuaJi · 2021-12-22 21:01:18 +08:00 · 876 次点击
    这是一个创建于 870 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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


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

    • BPK 文件的头部为 42 50 4B 03,APK 为 50 4B 03 04
    • BPK 的文件末端与 APK 不同,目前不知道他们之间有何关联
    • APK 文件内的以下内容会被替换
    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 的头部会导致解析失败


    目前已知:

    • BPK 加密包不能直接被解压
    • BPK 加密包仅能在他的定制系统内使用
    • 在定制系统内安装第三方文件管理器、应用管理器也可以识别他的加密格式
    • 存在第三方 BPK 加密包
    • 存在将普通 APK 转制成为 BPK 的方法
    • 步步高机器本身同时兼容 APK 与 BPK
    • 安装过程中不存在解密,通过应用安装程序安装 BPK ,提取后依旧是 BPK ,APK 同理

    目前想知道:

    • 如何实现这种加密
    • 其为何可以直接识别加密格式
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5779 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:34 · PVG 14:34 · LAX 23:34 · JFK 02:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.