zoukankan      html  css  js  c++  java
  • 汽车调校解码原理简介

    (这个文章的受众和我之前文章的受众不太一样,比较偏向介绍)

    @作者:backahasten

    序言

    汽车调校解码是一个汽修届的俗称,总的来说就是改汽车的数据(比如车检,发动机调校,二手车修改里程,解除防盗)或者配钥匙等等。当然,我们不讨论其他问题,只从嵌入式开发者的观察点出发,讨论原理问题。

    汽车电脑也是电脑,是电脑就有“硬盘,CPU和内存”,这里“硬盘”部分是最重要的,也就是flash,所有的数据都在flash里,如果可以找到并修改flash中的关键数据,就可以完成特定的功能。这个flash有可能在主芯片内部,也可能在外部,外部flash芯片就是大家俗称的“八爪鱼”,或者“八脚码片”。

    所以说,汽车解码调校的原理,就是改flash存储里面的数据,以完成特定的功能。

    调校与钥匙解码原理

    当大家用二进制代码查看器去看一个读出来的固件的时候,是这个样子的:

    一般的教程,会让使用者去改几个位置,或者去替换几个字,就完成了调校或者里程数据的修改,这是为什么呢,我们使用ida pro反汇编一下刚才的二进制数据,是这个样子的:

    或者这个样子:

    这些平常人看不懂的二进制数据,也就是芯片的代码和数据,芯片能看得懂,如果找准了位置,对数据进行修改,就可以完成了。

    这种工作十分繁琐和复杂,我的例子仅仅是s32k的小例子。如果在实际的汽车固件里,由于没有符号表,就没有这么好的可读性了,不会存在变量名函数名,程序的加载基址也需要自己确定,对于没有经验的人来说,这是很困难的。

    调校器与钥匙解码器原理

    鉴于所有东西都手动分析实在是难以落地,就出现了各种“器”,这一类设备的好处就是专人专干,业务分工。搞逆向的就专门搞逆向,之后把逆向出来的算法封装,搞成设备。做汽修的人就学习使用设备,开一家汽修店,出去接活赚钱。

    比如说Ktag,这个用于调校发动机的小东西,就是可以视为逆向算法的一个封装,做这样的一个东西,需要逆向工程师分析出来如下的内容:

    • 芯片的调试接口协议

    • 关键数据或者关键代码的位置和如何替换

    • 固件的校验协议

    这三者缺一不可,第一个决定了数据读出来,第二个决定了数据怎么改,第三个决定了数据重打包写回去之后是有效的。

    Ktag虽然可以兼容很多车,但是基本都是博世的电脑,专做一个系列对于这种调校器生产厂家来说是特别方便的,因为同一个厂家,所使用的芯片方案,协议方案,甚至开发习惯都是大同小异的,逆向工程师的经验有用武之地,这样便于最快速度完成适配,如果芯片和软件方案不同,逆向工程师又要花时间重新学习另外的架构。

    顺便说一句,既然汽车芯片可以被逆向,那么调校器的芯片也可以被逆向,逆向调校器的芯片和比逆向汽车芯片省钱多了,所以现在的大调校器厂,为了保证自己逆向出来的算法不被克隆,关键的数据已经不发放在设备上了,而是要求联网之后,上传处理,避免被仿造。

    挑战

    挑战还是有的,而且正在涌动,目前处于萌芽阶段。

    目前主流的车标芯片,都支持了安全启动和内部安全模块,这两个东西的效果是什么样的呢?

    • 改动固件和数据,芯片会发现,并且直接报错,不运行。

    • 程序读不出去,无法逆向。

    • 协议加密,导致每个汽车的协议都不一样(实际上是秘钥不一样),导致没有通用的方法,哪怕车机型号甚至批次完全一样。

    • 总里程信息放在安全区域,外界只能读取,但是不能修改。

    我手里的这个nxp的汽车级别主控芯片s32k就完全支持如上的功能,但是据我了解,很多汽车电子的开发者并没有把这些功能用起来,但是未来可能会。

    攻破这些安全措施也不是完全不可能,但是会造成成本的巨大增加。

    这里也牵扯到,车企对调校汽车或者解码这两个产业的态度,有的车企可能会很激进,完全禁止,但是有的车企可能不会做。

     

  • 相关阅读:
    docker基础:docker网络模式
    WEB架构师成长之路之一-走正确的路(转载)
    DDD(领域驱动设计)
    C#泛型和泛型约束(转载)
    MES系统介绍
    vue中 computed和watch的一些简单理解(区别)(转载)
    sqlserver常用表值函数
    SQLServerAgent 当前未运行,因此无法将此操作通知它。
    浅谈敏捷开发(转载)
    认证、授权、鉴权和权限控制(转载)
  • 原文地址:https://www.cnblogs.com/backahasten/p/12496356.html
Copyright © 2011-2022 走看看