CN115022414A - 一种面向车辆电子控制单元的can id逆向及确定方法 - Google Patents
一种面向车辆电子控制单元的can id逆向及确定方法 Download PDFInfo
- Publication number
- CN115022414A CN115022414A CN202210414438.9A CN202210414438A CN115022414A CN 115022414 A CN115022414 A CN 115022414A CN 202210414438 A CN202210414438 A CN 202210414438A CN 115022414 A CN115022414 A CN 115022414A
- Authority
- CN
- China
- Prior art keywords
- firmware
- standard frame
- candidate
- api function
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供了一种面向车辆电子控制单元的CAN ID逆向及确定方法,该方法包括:确定所获得的ECU固件的基地址,使其能够被正确的反汇编;根据固件中CAN标准帧的数据存储格式在固件中进行查找,获得一个候选CAN标准帧的集合;由于固件中的CAN标准帧无论存储在固件的什么位置,都要被CAN‑API函数所引用,因此通过此类特征定位出CAN‑API函数的地址;最后确定出被正确引用的CAN标准帧,进而确定出其CAN ID。本发明适用于对CAN标准帧采用固定数据存储格式,并且使用固定地址进行数据传输缓存的微控制器,因此适用于所有搭载此类微控制器的ECU。本发明对于智能网联汽车安全领域有一定的价值,特别是对于车内CAN网络的入侵检测和渗透测试。
Description
技术领域
本发明涉及汽车内部的电子控制单元在车内CAN网络通信时其所发送或接收的CAN标准帧中CANID的逆向及确定领域,并且涉及固件反汇编技术领域,尤其是一种面向车辆电子控制单元(ECU)的CAN ID逆向及确定方法。
背景技术
随着物联网技术的发展,更多存储空间更大,处理速度更快以及交互方式更广的智能网联设备进入到人们的生活之中,其中尤为明显的就是汽车。经过近二十年的飞速发展,智能网联汽车已愈发成为人们继手机电脑之外的第三个智能移动设备。现代汽车的内部网络通信主要分为几个模块,比如动力模块、车身控制模块与信息娱乐模块等,不同的模块之间由网关进行连接。在每个模块内部,由ECU(Electric Control Unit,电子控制单元)来实现对汽车的控制与信息的传输,ECU通过CAN帧来与其他ECU进行通信,不仅如此,众多传感器将采集到的数据也以相同的方式发送到CAN总线上。每个ECU向总线上发送CAN帧时都将包含特定的CAN ID,并且对于一个ECU来说,其所能够发送以及接受的CAN ID都是特定的,由整车厂商的硬件开发工程师或汽车模块开发工程师按照ECU要完成的功能嵌入到ECU的固件中。在学术界,围绕汽车内部CAN网络研究最多的就是入侵检测***,而这一研究的前提必须得建立在已知汽车各ECU将会发送或接收哪些CAN ID的基础上,不仅如此,要实现攻击特定ECU时也必须先得知其能够接收哪些CAN ID。
随着固件逆向工程技术的发展,对于ARM(Advanced RISC Machines)架构的研究逐渐成为了主流。而瑞萨作为知名MCU供应商,其SuperH、RX等系列MCU因其低能耗以及通信速度方面在汽车的信息娱乐***与T-BOX中使用非常广泛。
发明内容
本发明的目的在于提供一种面向车辆电子控制单元的CAN ID逆向及确定方法,特别是对于瑞萨的SuperH、RX系列MCU固件中存储的CAN ID进行逆向工程。
实现本发明目的的具体技术方案是:
一种面向车辆电子控制单元的CAN ID逆向及确定方法,该方法采用固件基地址确定模块、候选CAN标准帧定位模块、CAN-API函数定位模块和CAN ID确定模块组成的分析***,确定出从车辆ECU中提取出的固件在其MCU地址空间中的基地址,并使用确定出的基地址对固件进行反汇编,通过ISO11898协议中对CAN标准帧格式的定义以及MCU供应商对CAN标准帧数据存储结构的定义,根据定义中CAN标准帧的特征在固件中查找符合该特征的候选CAN标准帧,通过固件中CAN-API函数所要实现的传输目的,根据传输指令对CAN-API函数进行定位,通过候选CAN标准帧被CAN-API函数正确的引用即可得出该CAN标准帧的正确性,进而确定出其CAN ID;所述固件基地址确定模块确定出固件的基地址,并根据正确的基地址将反汇编后的固件输至候选CAN标准帧定位模块;所述候选CAN标准帧定位模块,根据CAN标准帧的特征在固件中查找并得到候选CAN标准帧的集合,将得到的候选CAN标准帧的集合输至CAN-API函数定位模块;所述CAN-API函数定位模块根据CAN-API函数中的特殊传输指令对CAN-API函数进行定位,并将CAN-API函数输至CAN ID确定模块;所述CAN ID确定模块将被CAN-API函数引用的候选CAN标准帧确定为正确的CAN标准帧,并确定出其CAN ID。
所述固件基地址确定模块用于车辆电子控制单元的固件,所述固件的获取方式包括使用高级诊断协议通过OBD接口获取,或者通过电子控制单元内部的JTAG调试接口,使用JTAG转USB的接口转换器进行读取,对于一些PCB板上已知型号并且常见的FLASH,直接使用编程器读取。
所述固件基地址确定模块其基地址确定方法通过定位固件中的switch-case语句来获得case语句块中被调用函数的绝对地址,进而通过对基地址的范围进行迭代,确定出正确的基地址。
所述候选CAN标准帧定位模块对固件进行逐字节筛选,将符合特征的数据结构定义为候选CAN标准帧,并且得到一个候选CAN标准帧的集合。
所述CAN-API函数定位模块,根据CAN-API函数参数列表中CAN标准帧的指针以及对CAN模块中mailbox的配置目的,将使用MCU指令集中特殊的传输指令,即20位立即数传输指令以及结构体数据传输指令,通过筛选符合条件的传输指令来定位出CAN-API函数。
所述CAN ID确定模块,候选CAN标准帧被CAN-API函数引用,即该候选CAN标准帧的地址被当作CAN-API函数中结构体传输指令的操作数;得到正确的CAN标准帧,根据CAN标准帧中的ID字段来得出CAN ID。
本发明的面向车辆控制单元的CAN ID逆向及确定方法,能够适用于所有符合ISO11898中对于CAN标准帧的定义,并且符合所述MCU中固定的数据存储结构以及通过固定地址进行传输缓存的ECU。
与现有技术相比,本发明具有如下有益效果:
1、本发明的固件基地址确定模块,通过固件中的switch-case中case语句块的函数调用逻辑来获取被调用函数的绝对地址,该方法具有较低的假阳性,在对比函数prologue中具有较高的准确性。
2、本发明的CAN标准帧识别方法可以确定出固件中所有的候选CAN ID。使用传统方法获取一个ECU所能够发送以及接收的CAN ID,通常是建立通信连接进行抓包获取,但这种方法只是得到了一部分的CAN ID。
3、本发明使用自动化方法定位到CAN-API函数,通过对此函数进行分析,可以得到ECU内部对于CAN标准帧的传输逻辑,对于整个CAN网络的研究具有较高的拓展性。
4、本发明具备通用性,适用于所有符合ISO11898中对于CAN标准帧的定义,并且符合所述MCU中固定的数据存储结构以及通过固定地址进行传输缓存的ECU,大部分ECU符合这一条件。
附图说明
图1为本发明实施例提供的面向车辆电子控制单元CAN ID的逆向及确定方法模块流程图;
图2为本发明实施例提供的SH2A固件示意图;
图3为本发明实施例提供的传输CAN标准帧API函数定位模块示意图。
具体实施方式
下面将结合本发明实施例及附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述实施例仅仅是本发明一部分实施例,而不是全部地实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明具体技术方案如下:
本发明的一种面向车辆电子控制单元的CAN ID逆向及确定方法,采用由固件基地址确定模块、候选CAN标准帧定位模块、CAN-API函数定位模块以及CANID确定模块构成的分析***来实现。
本发明中ECU固件的来源通过直接对车辆电子控制单元中的MCU上的JTAG调试接口进行读取。
所述固件基地址确定模块用于将固件映射到嵌入式设备内存中的起始位置,即固件的装载基地址。其中包括根据固件中存在的传输跳转表的指令在固件的二进制文件中定位到switch-case语句块及其跳转表,该跳转表存放每个case语句块的地址偏移量,进一步,可以根据跳转表中的地址偏移量来得出每一个case语句块的地址。而在case语句块内部,会有设置保存被调用函数绝对地址指针的传输指令,这样就可以得到一个被调用函数的绝对地址,遍历固件中所有的case语句块,就可以得到一个函数绝对地址的集合Addr []。将得到的所有函数绝对地址进行排序,那么基地址Base的范围就可以表示为:
Addr.max – fileSize< Base <Addr.min
其中fileSize为固件大小。
遍历该范围内的每一个地址,若存在某一地址x属于该基地址的范围,所得到的函数绝对地址处的指令为函数prologue的次数最多,那么就认为该地址为基地址。
在确定出固件的基地址后,就可以正确的反汇编出该固件。
所述候选CAN标准帧定位模块根据ISO11898协议中对CAN标准帧格式的定义以及瑞萨官方文档中关于CAN标准帧数据存储结构的定义,以及被对应API函数所调用的形式,在固件的二进制文件中通过其特征进行查找。在根据特征查找整个固件的二进制文件后,可以得到一个候选CAN标准帧的集合以及一个候选CAN ID的集合。
得到候选标准帧的集合以及候选CAN ID的集合,而这两个集合是包含假阳性的,因此,要确定出哪些CAN ID是正确的,由于一个正确的标准帧不管在固件中的什么位置,都要被传输CAN标准帧的API函数所调用,因此通过被API函数调用,可以判断一个候选标准帧的正确性。
所述CAN-API函数定位模块根据API函数要完成的传输功能在固件中进行定位,对于一个传输CAN标准帧的API函数来说,其参数列表中包含一个指向CAN标准帧结构体地址的指针,因此根据所述固件基地址确定模块确定出的固件基地址,将所述候选CAN标准帧定位模块中得到的所有候选CAN标准帧的绝对地址求出,并且在整个固件中查找,一旦某个候选CAN标准帧的绝对地址在固件中出现,就说明该绝对地址会被API函数中的取结构体数据指令MOV通过偏移量来取得该绝对地址,进而得到指向候选CAN标准帧的指针。通过这种方法可以得到所有在固件中出现的候选CAN标准帧的绝对地址,进而根据MOV指令中最大偏移量的范围可以得到取该绝对地址的MOV指令的地址,进而可以得到一个包含该MOV指令的API函数的地址集合candidateAPI_1[].
对于传输CAN标准帧的API函数,其不仅要将CAN标准帧的指针作为参数传入,还应将该标准帧传输到对应的缓存MailBox中,然后再通过MCU中的CAN模块将标准帧传输到CAN收发器中,最后由CAN收发器将其发送到CAN总线上。由于CAN模块中的MailBox的地址是已知的,因此可以查找API函数中将数据传输到MailBox所对应的传输指令,由于瑞萨的SuperH系列与RX系列MCU中CAN模块都处于内存的高地址,因此基本上都是使用立即数传输指令来设置一个指向MailBox地址的指针,该立即数传输指令可以传输20位的立即数,通过位扩展即可得到MailBox的32位绝对地址。以整个CAN模块的地址为target去遍历固件中所有的立即数传输指令,可以得到一个设置指向MailBox绝对地址指针的立即数传输指令的集合,进而可以得到一个包含该立即数传输指令的API函数的地址集合candidate API_2 [].
通过确定出API函数的内存大小,将上述两个候选API函数的集合取交集,可以得到传输CAN标准帧的API函数的地址。
所述CAN ID确定模块通过上述候选CAN标准帧绝对地址被API函数引用可以确定出该候选CAN标准帧的ID为正确的CAN ID,除此之外,通过在反汇编工具(如IDApro)上对所述CAN-API函数定位模块得到的API函数进行分析,可以通过其他传输逻辑来得到对应的CAN标准帧以及对应的CAN ID。
本发明可以应用于车辆网络安全的实验研究,通过逆向工程的方法得出目标ECU甚至整个车辆所有ECU可以发送以及接收的CAN ID,对于车辆内部CAN网络的入侵检测有较高的应用价值。本发明的应用原理可以应用于所有使用固定数据结构报文进行通信,并且采用信箱(MailBox)机制或者端口(EndPoint)机制进行数据缓存的数据传输场景,应用比较广泛。
实施例
图1为本发明实施例提供的面向车辆电子控制单元中CAN ID的逆向及确定方法模块构成图,具有通用性,下面以奔驰汽车搭载的型号为HERMES 2.0的TBOX及其中固件作为说明例,该TBOX搭载的是瑞萨SH2A架构的处理器。具体包括:
S101,固件基地址确定模块:
其中,所述固件基地址确定模块作为固件逆向工程的前提,只有确定出一个正确的基地址才能得到固件中正确的交叉引用。确定固件基地址可以分为两个部分,首先要找出固件中存在的绝对地址,进而通过绝对地址中对应的特殊指令来确定出基地址。
具体的,固件中存在着许多的传输绝对地址的指令,这些指令一般是用来设置一个指向被调用函数绝对地址的指针,而具有相同格式的指令确定出的指针并不都指向被调用函数,部分会指向处于内存高地址段的寄存器或者是一些其他数据,比如字符串。而由于switch-case语句的特性,在其case语句块中,通常为几个被调用函数,因此可以得到这些被调用函数的绝对地址。
图2为本发明实施例提供的所述SH2A固件示意图,固件中的每一个switch-case语句都会生成一个跳转表,该跳转表中存放每一条case语句块的偏移地址。对于该指令集架构,指令MOVA TBLM ,R0会将跳转表的首地址传给寄存器R0,接下来的MOV.W @(R0,R1) , R1指令将根据跳转表中的偏移量得出目的case语句块的偏移地址,最后指令BRAFR1将根据得出的地址偏移量进行跳转。
上述三条指令为实现switch-case语法的主要指令,因此第一步需要根据指令MOVATBLM , R0定位到固件中的switch语句块,并且该MOVA指令包含在defaultcase语句块中。
接下来通过MOVA指令中的TBLM地址,所述TBLM地址是一个相对于MOVA指令地址的偏移地址,该地址即为跳转表的起始地址,该跳转表的基地址为BRAF指令之后的NOP指令的地址+2。因此通过该跳转表的基地址与跳转表中的偏移地址,可以得到每一条case语句的地址。
在case语句块中,会通过指令MOV.L #绝对地址 , R11 (该寄存器通常为R10,R11,R14)来更新指向被调用函数的指针,这样就可以得到一个准确的被调用函数的绝对地址,不仅如此,在NOP指令之后跳转表之前也会生成一个该函数所调用函数的绝对地址,一般称为函数入口表,因此又得到了一些准确的被调用函数的绝对地址。
遍历固件中所有的switch语句块,就可以得到一个函数绝对地址的集合Addr[],将该集合中的所有绝对地址从小到大进行排序,就可以得出基地址Base的范围为函数绝对地址的最大值减去固件大小到函数绝对地址的最小值,即:
Addr.max – fileSize< Base <Addr.min
遍历该基地址范围中的所有地址,由于对于所述SH2A架构,其基本指令为16位,部分扩展指令为32位,因此基地址必须为2的倍数。
对于基地址范围中的地址x,当基地址为x时,若上述得到的函数绝对地址所对应的指令为函数的prologue的数量最多时,就认为该地址x为该固件的基地址。对于所述SH2A架构,其函数prologue通常为MOV.L R8 , @-R15,该指令为保存堆栈指令。
由上述过程得出固件基地址之后,就可以将固件正确的加载到反汇编工具IDApro中进行验证以及进行下一步的工作,该模块为固件逆向工程的基础。
S102,候选CAN标准帧定位模块:
所述CAN标准帧定位模块需查找固件中存在的初始化标准帧数据结构。根据瑞萨提供的关于SH2A系列MCU的官方文档可以得知CAN标准帧在固件中的的数据存储结构为:
Struct{
uint32_t id;
uint8_t dlc;
uint8_t data[8];
}can_frame_t;
以及传输API函数的签名为:
uint32_t R_CAN_TxSet(const uint32_t ch_nr, const uint32_t mb_mode,const uint32_t mbox_nr, const can_frame_t* frame_p, const uint32_t frame_type);
其参数列表中frame_p为一个指向标准帧结构体的指针。
因此,可以通过CAN标准帧数据结构的特征,以及根据IOS11898中关于CAN标准帧格式的定义在固件中进行查找,可以得出以下特征:
Ruler1:标准帧的长度为4(ID)+1(DLC)+8(DATA) = 13字节。
Ruler2:标准帧的ID段小于0x7FF并且不能全为0。
Ruler3:对于标准帧的DLC段与DATA段,DLC不能大于8并且DATA段中后(8 – DLC)个字节数据必须为0。
根据上述特征在整个固件中进行查找,可以得到一个候选CAN标准帧的集合,以及一个候选CANID的集合。本实施例结果为:
CAN标准帧个数为673个,CAN ID个数为96个。
仅通过特征查找的方法得出的结果必定存在假阳性,因此要加以判断哪些候选CAN标准帧是正确的标准帧,哪些候选CAN ID是正确的CAN ID。由于固件中的标准帧,不管处于什么位置,其地址都要被所述传输CAN-API函数作为参数引用,因此通过被传输CAN-API函数或是其他CAN-API函数引用,可以确定一个候选CAN标准帧的正确性。
S103,CAN-API函数定位模块:
所述CAN-API函数定位模块用来定位出用于传输一个CAN标准帧的函数,本实施例以SH2A系列或RX系列的CAN-API函数R_CAN_TxSet为例进行说明。
根据上述函数签名,其参数列表中包含mbox_nr(信箱号)与frame_p(CAN标准帧指针),因此可以从两个方面来定位该函数中所包含的传输逻辑指令(数据传输指令)。一方面,由于CAN标准帧的指针要作为参数传入,所以会存在一个数据传输指令来传输标准帧的地址,另一方面,由于该API函数要将标准帧传输到对应的MailBox中作为缓存,因此会有一个数据传输指令来设置一个指向对应MailBox的指针,根据该API函数要完成的这两种功能,可以去定位对应的传输指令,进而定位出该API函数。
图3为本实施例提供的传输CAN标准帧API函数定位模块示意图,通过上述两方面所定位到的传输指令地址的集合取交集即可判断出该API函数的地址,具体描述如下。
对于第一个方面,该API函数的参数列表中存在指向CAN标准帧地址的指针,因此该API函数中存在一个指令来传输标准帧的地址。对于所述SH2A指令集架构,与该功能对应的指令为MOV结构体数据传输指令,该指令格式为MOV.B Rm , @(disp12 , Rn),其通过12位的偏移量来取目标结构体的地址,由于偏移量为12位,因此其要取的目标地址必将在内存中处于该MOV指令上下4KB的范围内。
对于S102模块得到的候选标准帧[00 00 00 12 00 00 00 00 00 00 00 00 00]为例,求出其绝对地址为#3C050000,在整个固件中查找该绝对地址,若在固件中存在该绝对地址,并且在该绝对地址上下4KB范围内找到传输该绝对地址的MOV指令,即可说明该MOV指令设置了一个指向该候选CAN标准帧绝对地址的指针,因此可以得出包含该 MOV指令的函数块即为传输CAN标准帧的R_CAN_TxSet函数。
遍历查找所有候选CAN标准帧的绝对地址,可以得出一个传输指令MOV的集合,进而可以确定出一个候选R_CAN_TxSet函数的集合candidateR_CAN_TxSet 1[]。
所述另一方面,由于该R_CAN_TxSet函数不仅要将指向CAN标准帧地址的指针作为参数传入,其还需要将该标准帧传输到对应的MailBox中,因此该函数内部指令会存在一个数据传输指令来设置一个指向MailBox的指针。
对于上述SH2A系列的MCU,其CAN模块地址处于内存地址空间的高地址段,即FFFE0000~FFFE0500,因此对于该系列MCU的指令集架构通常使用20位立即数传输指令进行传输这一高地址,即指令MOVI20 #20位立即数 ,R0或者是MOVI20S #20位立即数 ,R0。通过该指令可以传输CAN模块地址的后20位,再通过符号扩展即可得到该32地址,因此包含该立即数传输指令的函数即为候选R_CAN_TxSet函数。
由于存在通过立即数传输指令确定出一个绝对地址作为基地址,而其他MailBox的地址通过该基地址与偏移量进行获取,因此将整个CAN模块的地址的后20位设为target,查找整个固件中对应的立即数传输指令,可以得到一个候选R_CAN_TxSet函数的集合candidate R_CAN_TxSet2[]。
对于本实施例,经过反复实验将传输MailBox地址的立即数传输指令与传输标准帧结构题的结构体传输指令在同一函数中的距离(即一个函数的内存大小)设置为64KB。根据这个范围将上述得出的两个候选R_CAN_TxSet函数的集合取交集,即可得出目标R_CAN_TxSet函数的地址。
S104,CAN ID确定模块:
所述CAN ID确定模块通过上述CAN-API函数定位模块确定得出的传输CAN标准帧API函数以及接收CAN标准帧API函数对S102模块得出的候选CAN标准帧的引用即可以得出被引用的候选标准帧为正确的CAN标准帧,那么其CAN ID就为一个正确的CAN ID,不仅如此,通过反汇编工具IDApro对API函数进行分析亦可得出通过其他传输逻辑配置的CAN标准帧数据,并且可对得出的CAN ID进行正确性验证。
利用上述方法进行CAN标准帧的定位与API函数的定位,编写自动化脚本,可以有效地得出固件中存在的CAN ID。
本发明所使用的固件来自于使用一个JTAG转USB的接口转换器FT232H,直接对一个使用在奔驰A级车的TBOX的MCU芯片引脚进行读取,除此之外,获取固件的方式有很多种,比如可以通过KTAG编程器直接对发动机ECU进行读取,通过OBD口使用高级诊断命令来获取固件,或者通过拆解ECU,使用PCB板子上的JTAG接口进行读取。虽然不同方法获取的固件会有结构上的不同,但本发明所示的方法适用于任何符合上述条件的固件。
本发明具备通用性,适用于所有支持ISO11898中定义的关于CAN标准帧的格式并且存在类似的存储数据结构与类似于MailBox的数据缓存机制。并且本发明严格适用于瑞萨SH2A、RX系列MCU,其在汽车ECU中的使用主要存在于信息娱乐模块。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (6)
1.一种面向车辆电子控制单元的CAN ID逆向及确定方法,其特征在于,采用固件基地址确定模块、候选CAN标准帧定位模块、CAN-API函数定位模块和CAN ID确定模块组成的分析***,确定出从车辆ECU中提取出的固件在其MCU地址空间中的基地址,并使用确定出的基地址对固件进行反汇编,通过ISO11898协议中对CAN标准帧格式的定义以及MCU供应商对CAN标准帧数据存储结构的定义,根据定义中CAN标准帧的特征在固件中查找符合该特征的候选CAN标准帧,通过固件中CAN-API函数所要实现的传输目的,根据传输指令对CAN-API函数进行定位,通过候选CAN标准帧被CAN-API函数正确的引用即可得出该CAN标准帧的正确性,进而确定出其CAN ID;所述固件基地址确定模块确定出固件的基地址,并根据正确的基地址将反汇编后的固件输至候选CAN标准帧定位模块;所述候选CAN标准帧定位模块,根据CAN标准帧的特征在固件中查找并得到候选CAN标准帧的集合,将得到的候选CAN标准帧的集合输至CAN-API函数定位模块;所述CAN-API函数定位模块根据CAN-API函数中的传输指令对CAN-API函数进行定位,并将CAN-API函数输至CAN ID确定模块;所述CAN ID确定模块将被CAN-API函数引用的候选CAN标准帧确定为正确的CAN标准帧,并确定出其CAN ID。
2.根据权利要求1所述面向车辆控制单元的CAN ID逆向及确定方法,其特征在于,所述固件基地址确定模块用于车辆电子控制单元的固件,所述固件的获取方式包括使用高级诊断协议通过OBD接口获取,或者通过电子控制单元内部的JTAG调试接口,使用JTAG转USB的接口转换器进行读取,对于一些PCB板上已知型号并且常见的FLASH,直接使用编程器读取。
3.根据权利要求1所述面向车辆控制单元的CAN ID逆向及确定方法,其特征在于,所述固件基地址确定模块其基地址确定方法通过定位固件中的switch-case语句来获得case语句块中被调用函数的绝对地址,进而通过对基地址的范围进行迭代,确定出正确的基地址。
4.根据权利要求1所述面向车辆控制单元的CAN ID逆向及确定方法,其特征在于,所述候选CAN标准帧定位模块对固件进行逐字节筛选,将符合特征的数据结构定义为候选CAN标准帧,并且得到一个候选CAN标准帧的集合。
5.根根据权利要求1所述面向车辆控制单元的CAN ID逆向及确定方法,其特征在于,所述CAN-API函数定位模块,根据CAN-API函数参数列表中CAN标准帧的指针以及对CAN模块中mailbox的配置目的,将使用MCU指令集中的传输指令,即20位立即数传输指令以及结构体数据传输指令,通过筛选符合条件的传输指令来定位出CAN-API函数。
6.根据权利要求1所述面向车辆控制单元的CAN ID逆向及确定方法,其特征在于,所述CAN ID确定模块,候选CAN标准帧被CAN-API函数引用,即该候选CAN标准帧的地址被当作CAN-API函数中结构体传输指令的操作数;得到正确的CAN标准帧,根据CAN标准帧中的ID字段来得出CAN ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210414438.9A CN115022414B (zh) | 2022-04-20 | 2022-04-20 | 一种面向车辆电子控制单元的can id逆向及确定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210414438.9A CN115022414B (zh) | 2022-04-20 | 2022-04-20 | 一种面向车辆电子控制单元的can id逆向及确定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115022414A true CN115022414A (zh) | 2022-09-06 |
CN115022414B CN115022414B (zh) | 2023-08-22 |
Family
ID=83067056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210414438.9A Active CN115022414B (zh) | 2022-04-20 | 2022-04-20 | 一种面向车辆电子控制单元的can id逆向及确定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115022414B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116880858A (zh) * | 2023-09-06 | 2023-10-13 | 北京华云安信息技术有限公司 | 固件实际基地址的获取方法、装置、设备以及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130021652A (ko) * | 2011-08-23 | 2013-03-06 | 현대자동차주식회사 | 복수의 서로 다른 차량 진단 프로토콜을 표준 진단 프로토콜로 변환하는 인터페이스 장치 및 그 방법 |
US20130250804A1 (en) * | 2012-03-26 | 2013-09-26 | Electronics And Telecommunications Research Institute | Automotive partial networking apparatus and method |
CN106950864A (zh) * | 2017-04-11 | 2017-07-14 | 重庆长安汽车股份有限公司 | 一种整车控制器的can通信程序生成方法及装置 |
KR101923511B1 (ko) * | 2018-03-27 | 2018-11-29 | 콘티넨탈 오토모티브 게엠베하 | 차량 진단 통신 장치 및 그 방법 |
CN109214149A (zh) * | 2018-09-11 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | 一种mips固件基地址自动化检测方法 |
US20190028500A1 (en) * | 2017-07-24 | 2019-01-24 | Korea University Research And Business Foundation | Ecu identifying apparatus and controlling method thereof |
US20190227783A1 (en) * | 2018-01-23 | 2019-07-25 | Wistron Corporation | Electronic apparatus and firmware update method thereof |
CN110380842A (zh) * | 2019-08-08 | 2019-10-25 | 北方工业大学 | 适用于智慧网联汽车的can总线报文签名方法、装置和*** |
CN111106989A (zh) * | 2019-12-26 | 2020-05-05 | 国家计算机网络与信息安全管理中心 | 车辆can总线协议确定方法及装置 |
CN113612786A (zh) * | 2021-08-09 | 2021-11-05 | 上海交通大学宁波人工智能研究院 | 一种车辆总线的入侵检测***及方法 |
CN113688138A (zh) * | 2021-08-27 | 2021-11-23 | 华东师范大学 | 一种面向车辆引擎控制单元的关键Map表逆向及定位方法 |
-
2022
- 2022-04-20 CN CN202210414438.9A patent/CN115022414B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130021652A (ko) * | 2011-08-23 | 2013-03-06 | 현대자동차주식회사 | 복수의 서로 다른 차량 진단 프로토콜을 표준 진단 프로토콜로 변환하는 인터페이스 장치 및 그 방법 |
US20130250804A1 (en) * | 2012-03-26 | 2013-09-26 | Electronics And Telecommunications Research Institute | Automotive partial networking apparatus and method |
CN106950864A (zh) * | 2017-04-11 | 2017-07-14 | 重庆长安汽车股份有限公司 | 一种整车控制器的can通信程序生成方法及装置 |
US20190028500A1 (en) * | 2017-07-24 | 2019-01-24 | Korea University Research And Business Foundation | Ecu identifying apparatus and controlling method thereof |
US20190227783A1 (en) * | 2018-01-23 | 2019-07-25 | Wistron Corporation | Electronic apparatus and firmware update method thereof |
KR101923511B1 (ko) * | 2018-03-27 | 2018-11-29 | 콘티넨탈 오토모티브 게엠베하 | 차량 진단 통신 장치 및 그 방법 |
CN109214149A (zh) * | 2018-09-11 | 2019-01-15 | 中国人民解放军战略支援部队信息工程大学 | 一种mips固件基地址自动化检测方法 |
CN110380842A (zh) * | 2019-08-08 | 2019-10-25 | 北方工业大学 | 适用于智慧网联汽车的can总线报文签名方法、装置和*** |
CN111106989A (zh) * | 2019-12-26 | 2020-05-05 | 国家计算机网络与信息安全管理中心 | 车辆can总线协议确定方法及装置 |
CN113612786A (zh) * | 2021-08-09 | 2021-11-05 | 上海交通大学宁波人工智能研究院 | 一种车辆总线的入侵检测***及方法 |
CN113688138A (zh) * | 2021-08-27 | 2021-11-23 | 华东师范大学 | 一种面向车辆引擎控制单元的关键Map表逆向及定位方法 |
Non-Patent Citations (2)
Title |
---|
刘蓬勃等: "汽车can网络的入侵检测模型及装置研究", 《实验技术与管理》, vol. 39, no. 3 * |
白华;林巧婷;: "基于CAN和RFID的车胎信息采集***的设计", 仪表技术与传感器, no. 10 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116880858A (zh) * | 2023-09-06 | 2023-10-13 | 北京华云安信息技术有限公司 | 固件实际基地址的获取方法、装置、设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115022414B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533302B2 (en) | Trace and debug method and system for a processor | |
US9411745B2 (en) | Multi-core heterogeneous system translation lookaside buffer coherency | |
US20210089314A1 (en) | Path prediction method used for instruction cache, access control unit, and instrcution processing apparatus | |
US8055805B2 (en) | Opportunistic improvement of MMIO request handling based on target reporting of space requirements | |
CN112631657B (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
CN101371224A (zh) | 高效存储器层级管理 | |
CN115022414A (zh) | 一种面向车辆电子控制单元的can id逆向及确定方法 | |
JP2011238251A (ja) | 正確なプレデコードを保証する方法及び装置 | |
CN107290654A (zh) | 一种fpga逻辑测试结构及方法 | |
CN110806899B (zh) | 一种基于指令扩展的流水线紧耦合加速器接口结构 | |
JP5680574B2 (ja) | 周知のプロセッサーステートに基いてcamリネーミングレジスタファイルにおいてコンパレーターを選択的にイネーブルにするための電力節約方法および装置 | |
CN115629806A (zh) | 一种处理指令的方法、***、设备和存储介质 | |
US20040049665A1 (en) | Trace control circuit adapted for high-speed microcomputer operation | |
CN116107641A (zh) | 指令存储***、方法、装置、计算机设备及可读存储介质 | |
CN114510723B (zh) | 一种智能合约权限管理漏洞检测方法及装置 | |
CN100474266C (zh) | 一种用于数字信号处理器的调试***及其调试方法 | |
CN114035846A (zh) | 一种指令验证方法及指令验证装置 | |
US20030056037A1 (en) | Hardware chain pull | |
CN113965917B (zh) | 通信方法、装置及终端设备 | |
CN105573818A (zh) | 一种虚拟化环境中的windows内核基地址及编译版本识别方法 | |
JP2845754B2 (ja) | マルチプロセッサシステム | |
CN112835824A (zh) | 总线主设备、芯片、芯片控制方法、智能终端及存储介质 | |
CN117348936A (zh) | 处理器、取指方法和计算机*** | |
JP2004013289A (ja) | マイクロコントローラのオンチップデバッグ方法 | |
CN116225811A (zh) | 功能验证方法及其***、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |