前言
我的汽车是非常古老的“旧能源”汽车,虽然自带了一个安卓车机,但是系统封闭,什么权限都没开放,也不能安装第三方应用,只有一个“阉割”后的应用商店,里面只有几个非常老旧且缺乏维护的 APP 。
我很多年前也研究过怎么在这个车机上安装应用,那时还没有 AI ,只能纯人工检索,检索到了几种方法:
- 输入法漏洞
- 劫持 DNS
输入法漏洞即打开车机自带的百度输入法的隐私政策协议页面,这个页面是个 webview,其中还有外链,此时只要断开车机网络,点击这个外链,就会触发原生安卓的webview网络错误页面,在这个页面又存在跳转到原生安卓网络设置的链接,从这里跳出去就能直接进入到原生安卓界面,那么想干什么都可以了(例如开启 ADB)。但是由于我的车买来时就已经是新版系统了,新系统为了封堵这个漏洞,把所有原生页面全删除了。
劫持 DNS 就更极端了,上面说到,这个车机自带了一个“阉割”后的应用商店,于是就有人想到可以自建 DNS,然后在笔记本上开启热点,使用自建的 DNS,这个自建的 DNS 会劫持应用商店的域名,解析到自建的服务器上,这样就能实现安装任意应用了。但是这种方案只能去买其他人建好的服务,非常贵,自己建首先也得能抓到原始应用商店的接口才行,故我也放弃了。
直到最近有个叫 DiPlay 的项目挺火的,这个项目就是能够在不依赖任何外部硬件设备的情况下,直接在安卓车机上安装这个 APP,就可以连接 CarPlay。
看到这个项目我就想起来我的 “旧能源”汽车了,但是想安装这个,首先还是得解决车机安装应用的问题。
好在现在 AI 非常厉害了,我就想着看看 AI 有什么解决办法没,结果 AI 居然搜不出来解决方案,这是我万万没想到的。
虽然后面通过 AI 逆向车机固件找到了厂商预留的调试后门,但是网上似乎没有相关信息,所以决定还是写一篇文章记录一下吧,日后如果也有人有类似的需求,也能通过 AI 直接搜索到,就不用再像我一样,还得自己逆向固件。
最后,附上我的车机信息:
| 项目 | 确认结果 |
|---|---|
| Android 版本 | 5.1,API 22 |
| 车机型号 | R621 |
| 系统品牌 | ECARX(亿咖通) |
| 硬件平台 | MT6735 |
| CPU 架构 | 64 位 ARM,同时兼容 32 位 ARM 应用 |
| 固件版本 | FE_7B_03_41_08_250901_R |
| 软件版本 | MPV1.1-20250901-060840 |
| 构建时间 | 2025 年 9 月 1 日 14:08:40,北京时间 |
我的车型号是 帝豪S 2021 1.4T CVT 尊贵版。
进入工程模式,开启 ADB,安装 APP
这次能够有所突破还是得益于这个车机在 2025 年爆发的一个莫名其妙致命 BUG,不知道是这个车机开发商写的什么服务的日期依赖有问题,导致到 2025 年后,所有车机的系统日期都发生了错乱,进而导致行车记录仪、GPS、网络、时间等基础服务全部无法使用了。
好在虽然车已停产,但是系统维护还是有的,有些 4S 店图方便,直接把固件包和升级方式发给车主,让车主自己升级,于是固件包就流到互联网上了,也被我下载下来了,从而得以有了逆向的入口。
好了,前面说了这么多有的没的,后面就按照步骤依次简略说应该怎么做了,不罗嗦了。
对了,以下操作都是基于我的车机软件提供商 德赛西威 的解决方案,这款车还有一个提供商 北斗星通 ,它可以直接按照我上面提到的输入法漏洞的方式安装第三方 APP,不用这么麻烦。
判断车机软件提供商的方法:
打开车机的 设置-车辆-系统-关于本机 查看 MCU 版本。
如果是数字 x.xx_ 开头的就是北斗星通。
如果是 0FE7B_ 开头的就是德赛西威。
进入工程模式
依次打开车机的 设置-车辆-系统-关于本机
在关于本机页面依次快速点击:
- 硬件版本(一次)
- 安卓版本(一次)
- 系统版本(两次)
完成后即可进入工程模式。
开启 ADB
在工程模式页面中,进入 “版本信息”,在版本信息中:
快速连续点击 “Radio软件版本”8 次,每次间隔小于 1 秒。
第 8 次之后,在 1 秒内点击“4G 硬件版本信息”。
对应代码会请求开启 ADB,并显示 “adb打开”。
此时你就可以直接拿 USB 线连接车机下面的 USB 口使用 ADB 了。
(注意可能需要公对公 USB 线)
另外,ADB 会一直保持开启,即使断电或熄火也不会自动关闭,此时 USB 接口不能再用于充电,也不能识别到 U 盘。
关闭 ADB 可以通过在工程模式-版本信息 → 点击“屏幕TP版本信息” 此时会请求关闭,并提示 “adb关闭”。
安装 app
常规的 adb install xxx 方式会被系统拦截,但是可以通过流式安装的方式安装。
依次执行:
adb -d push "/你的APK绝对路径/xxx.apk" /data/local/tmp/temp.apk
adb -d shell pm install-create --user 0
第二条命令会返回一个 会话号, 记下返回的会话号。 假设是 [123],把下面的 123 换成实际号码,逐条执行:
adb -d shell pm install-write 123 base.apk /data/local/tmp/temp.apk
adb -d shell pm install-commit 123
返回 Success 即表示已经安装成功了。
总结
虽然开启了 ADB ,DiPlay 也安装上去了,但是捣鼓半天就是连接不上,很无语。
对了,正如刚才提到的,这个车机把原生安卓的所有页面都干掉了,甚至包括权限请求这些页面,所以在安装一些需要授权的 APP 时,可能无法弹出授权窗口,导致无法使用,此时就需要使用 adb 命令手动授权了,具体命令自行问 AI 吧,我这里就不写了。