论坛首页 密码学讨论区 阅读主题

[原创] 车机OTA包解密

87 浏览 12 回复
#1 楼主 2026-06-01 21:09:13
唉,一言难尽,我的良马(ju)车机系统终于更新了,上了想要的功能,福音呀,盼了很久,终于更新了。我就想着将OTA包里面的apk,直接提取出来,升级就行了,不需要更新车机系统了,结果失败!拿到了心心念的OTA升级包,一打开。哦豁~~~~ 它竟然做了加密的,,,好惨我就想着,既然这里做了加密,那么车机系统在拿到包后,肯定也需要进行解密才能去安装呀,于似乎带着好奇去看了看在车机交流群里面,顺利拿到了负责车机升级的apk,拖进jadx 里面,找关键字,HuOs还真找到了。 这不就是我升级的路径,和包格式嘛 .zip跟着调用栈一路静态分析,结果追到了解密方法: 这里发现 包被进行了 "AES/CBC/PKCS5Padding" 的加密,车机系统拿到文件,进行解密后,再安装又上一个步骤发现,是通过获取 "ckey" 的值,然后使用 解密,对这个文件进行解密,获取前16 字节,作为系统包的aes key 想要解密这个就得两个步骤:1、获取到这个ckey 这个文件 (万能的车友群 把文件给了我)2、拿到 decrypt 的代码实现逻辑 (万能的车友群 把文件给了我)步骤2 走了一些弯路起初以为 decrypt 这个代码的实现是放在 boot-framework.vdex 、最后通过搜索,发现是放在 boot-ext.vdex 里面的。 这里就需要使用两个工具 最终打开, 解密方法则是将 文件的值,与一个key ,进到native 里面 计算出来 那么我们还需要获取到这个token :通过静态分析,获取token的 通过获取升级 apk 下的一些文件值,在native 里面进行判断,最后返回出结果。 起初,我以为需要在native 里面进行计算,最后反编译进去一看,,这...... 好家伙只是将获取的数据进行了对比,然后直接返回token, 想复杂了。。。。前面既然已经拿到了 token ,那我们直接使用Unidbg 将 token 值,和ckey 的值传入,计算出结果即可 拿到key 了,返回第一步,使用AES/CBC/PKCS5Padding 解密,获得ota包 然后使用 开源工具 payload-dumper-go 将 payload.bin 提取出 system.img 即可:就拿到了 想要的apk了 整体弄下来,花了一下午的时间,最开始想的太难了,动手起来,多亏了 万能的车群 提供了相应的文件进行分析,万事开头难,做起来就顺了。整体分析难道不大,都是一些基础的调用,和简单的知识点结合就行。int __fastcall Java_com_***_***_***_WhiteBoxNativeImpl_connectionToNativeVerifyDigest(JNIEnv *a1, int a2, int a3, size_t a4, int a5, int a6, size_t a7, int a8, int a9, int a10, int a11)

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-285256.htm
#2 2026-06-01 21:09:13
55555555太强了
#3 2026-06-01 21:09:13
你的分享对大家帮助很大,非常感谢!
#4 2026-06-01 21:09:13
好几年前的项目了还在升级呀,现在新项目好像都在锁adb,这种锁adb的咋开
#5 2026-06-01 21:09:13
什么车友群这么强
#6 2026-06-01 21:09:13
牛逼
#7 2026-06-01 21:09:13
学习一哈
#8 2026-06-01 21:09:13
《万能的车群》
#9 2026-06-01 21:09:13
有点意思
#10 2026-06-01 21:09:13
万能的车友群
#11 2026-06-01 21:09:13
群聊帮大忙了
#12 2026-06-01 21:09:13
太有意思
#13 2026-06-01 21:09:13
真有点意思

请登录后参与讨论

立即登录 注册账号