夜雨聆风学习资料网

ARTICLE · 1007496

魔改版比亚迪APP:蓝牙靠近解锁,它到底怎么开的?

魔改版比亚迪APP:蓝牙靠近解锁,它到底怎么开的?

手机端的比亚迪 APP,相信各位车友都不陌生。远程控车、看续航、开空调,手指点一点就完事,谁还没装一个?

可近两天,我在车友群里看到车友甩出来一个安卓手机端比亚迪 APP,说这是"魔改版"——把蓝牙"靠近解锁"之类的功能给跑起来了。

正版比亚迪 APP 可是上了梆梆企业版加固的,壳包得严严实实。那这魔改版……莫非是把加固壳给"脱"了?不然是怎么做到的魔改?话不多说,开整。


🔍 第一章:究竟改了啥?

既然是"魔改",总得在文件上动过手脚。

掏出手机里常备的MT 管理器,把两份 APK 往里一丢,开始比对文件差异。一边是车友给的BYD-Android_9.16.1_20260914.apk(魔改版),另一边是比亚迪官网下载的superApp.apk(官方版)。

两边往里一拆,差别立刻现原形:

1.1 魔改版"多"出来的东西

classes2.dex额外的代码文件,藏着 com.alamri.* 这一整套逻辑
libhdex.so原生补丁加载器,负责把增强代码"注入"到比亚迪 APP 运行时
libfridagadget.so / libsplant.so知名的注入 / 插桩框架,专门干运行时 hook 的活
libtransmap*.so翻译相关 native 辅助库(含阿拉伯语等 RTL 语言支持)
assets/byd-localization/*离线翻译包和一些配置

1.2 被"动过"的东西

AndroidManifest.xml改了、签名也重新签了——说明这补丁得申请额外权限、注册服务,再重新打包才能装上。

结论:这不是官方升级,而是有人把一套增强补丁,硬"贴"在了官方 APK 之上。


🧩 第二章:扒开 classes2.dex 的皮!

方便快速看懂的代码都藏在classes2.dex里。

祭出老熟人jadx——这玩意儿就跟幼儿园老师教的用勺子吃饭一样基础——把它转成 Java 并导出,再扒一眼包结构,顶层非常干净:

com

└─ alamri.proximity      ← 名字就很直白:近场

└─ alamri.localization   ← localization,本地化

└─ alamri.tr             ← tr,看着像注入中枢

光看名字就知道,这位作者搞了不止一个功能。其中proximity(近场)显然就是车友说的"靠近解锁"。


🤖 第三章:到底干了啥?

jadx 导出来的 Java,类多、方法绕,咱一个普通玩家直接看肯定头大。

但自己看不懂,还能不会摇人吗?火速摇来一个Agent,把导出的代码往它面前一摊:"来,帮哥分析分析。"

3.1 proximity:手机变车钥匙(也就是车友说的"靠近解锁")

ProximityService是个常驻前台服务:屏幕关了它还在后台"站岗",靠动作传感器感知手机移动,再用低功耗蓝牙(BLE)扫本车的信号强度(dBm)。

解锁不是"连上就开",而是靠信号 + 时间窗:

参数业务含义强信号持续 1.5 秒才算"真靠近",开始解锁弱信号持续 3 秒才算"真离开"离开满 1 分钟才执行上锁两次动作间隔 ≥10 秒防抽风冷却

关键是它的实现原理:它并没有自己重写一套控车协议,而是通过BydBridge用反射去调用原版比亚迪 APP 里处理蓝牙车钥匙的相关类与指令(BtKeyService、IBleChannel、BydBleChannelManager、BtKeyUtils),取出 VIN、MAC,再下发解锁 / 上锁指令。甚至用KeyAddress.normalize()规范化蓝牙地址,即使车机蓝牙地址轮换了,也能认出是本车。

一句话:它不造车钥匙,而是"借"原版 APP 现成的蓝牙车钥匙能力来用。

3.2 localization:全世界都在翻译中国话

localization是一个本地化翻译引擎:

核心类作用SharedResolver翻译检索内核,管短语表 / 别名表 / 正则规则AndroidTextAdapter适配 TextView/Spannable,保留富文本样式StrictJson手写 JSON 解析器,防恶意包搞崩 APPPackCodecECDSA P256 验签 + 曲线点校验,翻译包"安检门"PackUpdaterHTTPS 钉扎下载,防中间人篡改

它能把中文界面翻成 en/ar/ru/es 等语言,还适配桌面 Widget、快捷方式。对于外籍车主或阿拉伯语(从右到左)用户,这算是个实打实的贴心功能。

3.3 tr:运行时注入"胶水层"

tr是整层的"胶水中枢":负责把翻译能力注入到比亚迪原生界面里,并在运行时做一些稳定性兜底。具体细节较多,就不展开了,有兴趣的可以具体研究。


🛡️ 第四章:简单归个纳!

把魔改版和国内原版 APK一对比,实现思路就清晰了:

原版比亚迪 APP:APK 里本身就带着蓝牙车钥匙相关的实现(那些私有类就编译在里面);

魔改版:不重新造轮子,而是用libhdex.so+classes2.dex在运行时注入 / 反射,直接复用原版 APP 现成的蓝牙车钥匙指令,把流程跑起来。

所以它能成,靠的是"借原版 APP 的锅,煮自己的饭"——工程上也有几点亮点值得说:

零第三方依赖:JSON、验签、原子存储全自研,少踩供应链坑;

更新链路安全:ECDSA + HTTPS 钉扎 + 包体积 / 超时限制;

处处降级:翻译失败给原文、签名失败用旧包、蓝牙异常不崩溃——增强功能可以没有,主流程不能挂。


🌍 第五章:这玩意儿从哪来的?

翻到魔改版 APK 里的assets/byd-localization/trust.properties,里面赫然写着项目的地址——原来这套增强补丁出自一位海外开发者shihabal3amri的公开项目:

📱 项目主页(Android):https://shihabal3amri.github.io/BYD-Android/zh-Hans/

🍎 项目主页(iOS):https://shihabal3amri.github.io/BYD-iOS/zh-Hans/

💻 代码仓库:https://github.com/shihabal3amri

也就是说,车友群里流传的这个魔改版,源头是这位开发者公开的增强项目。


📝 第六章:它为什么存在?

我个人猜,大概是两个方向:

其一,给功能更全的中国版 APP 做多语言适配。中国版 APP 功能本就丰富,这套增强层顺手把界面翻译成多国语言,让更多语种的用户也能用得上。

其二,平行出口车辆带来的现实需求。近些年比亚迪出口量一路走高,海外不少市场跑着"中国版平行出口"的车辆——这些车只能用中国版 APP,可车主母语不是中文,界面看不懂、用着别扭。一个本地化增强层,正好补上这块短板。

作为车主,我其实挺乐见这种民间折腾的:它从一个侧面说明,比亚迪的车机生态有足够的底子,才值得大家去研究、去扩展。一个活跃的用户 / 开发者社区,本身就是产品生命力的体现。希望比亚迪越做越强,车机体验越来越好,官方也能多听听这些"用脚投票"的真实需求。


💬 投一票再走

聊聊你最真实的想法👇

欢迎在评论区留言,也欢迎转发给身边玩车机、搞逆向的朋友一起"考古"!


⚠️ 合规声明:本文基于公开 APK 对比与代码反编译整理,仅供技术学习交流。请勿用于非法破解、篡改或传播未授权软件;自行修改 / 安装非官方 APK 可能存在安全风险与保修影响,请自行评估。

相关学习资料