代码保护方面,代码混淆的技术也没有普遍用到。
我们对两家国外的 OBD 产品进行了安全测试,结果一样不容乐观。在其中一家的代码程序里很容易地找到发送指令的函数,而且的私有协议过于简单,只要用手机通过蓝牙对设备发送相应的指令,就能达到控制车的目的。另一家更糟糕,基本上没有防逆向措施,有代码混淆但是混淆强度很弱,无加固,导致代码逻辑泄露。对重新打包无感知。容易被篡改程序流程或者植入恶意 java 代码。
安装之前一定要了解这个产品是读取数据还是写入数据 读取数据的obd是没有影响的但是写入数据的是有一定影响的 怎么区分 就是不能对汽车本身施加一些动作 比如说远程启动 一类的 就是有影响的
万能的OBD没有什么不可以做到的,但仔细地推敲,就会发现这些华丽数据背后的种种坑爹:
(1)故障码数据价值形同鸡肋
OBD-II最主要的功能就是提供故障码的诊断,当出现排放故障时,ECU记录故障信息和相关代码,并通过故障灯发出警告。一般来讲, OBD-II故障码由一位字母和四位数字组成。如以下的图片所示,大部分OBD厂商只能获取以“PO/P2/P3400-P3FFF的通用故障码信息,其他为汽车制造商自定义的故障码信息,只有原厂才能诊断。举例来讲,大众车型全车有15000个故障码,而通用故障码只有不到3000个,占比只有五分之一,远远不能满足车辆诊断的要求。
而实际上,大部分的通用故障码信息对于车主来说意义并不大,还是以大众通用故障码举例,“P0001代表燃油量调节器控制电路/开路、P025A代表燃油泵模块控制电路/开路、P0103代表空气流量传感器A电路高……”是不是有点被绕晕了?总的来讲,就是检测包括动力系统、底盘系统、通讯系统、车身系统中的部分通用故障。这些信息对于车辆的安全性是没有任何影响力的,即时性的故障都会在仪表盘上显示,比如气囊、安全带、水温过高等问题都会直接提醒。当这些冷冰冰的数据都不能驱动车主使用的热情,形同鸡肋之际,还何谈去吸引保险公司呢?
(2)私有协议破解、更新有瓶颈
也许是意识到了从公有故障码获取信息的价值有限,于是大家都牟足了劲儿想在破解原车Can-bus的私有协议上寻求突破,瞬时油耗分析、油压、车门电量、车灯检测、车辆远程监控与防盗……琳琅满目的功能,一山还比一山高。