CN118012567A - 基于高级抽象层模拟的固件托管分析测试方法及系统 - Google Patents
基于高级抽象层模拟的固件托管分析测试方法及系统 Download PDFInfo
- Publication number
- CN118012567A CN118012567A CN202311844799.8A CN202311844799A CN118012567A CN 118012567 A CN118012567 A CN 118012567A CN 202311844799 A CN202311844799 A CN 202311844799A CN 118012567 A CN118012567 A CN 118012567A
- Authority
- CN
- China
- Prior art keywords
- function
- firmware
- library
- target firmware
- target
- 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.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 53
- 238000004088 simulation Methods 0.000 title claims abstract description 33
- 238000010998 test method Methods 0.000 title claims abstract description 14
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000012360 testing method Methods 0.000 claims abstract description 46
- 230000003068 static effect Effects 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims abstract description 17
- 238000013507 mapping Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 294
- 238000012544 monitoring process Methods 0.000 claims description 17
- 230000007717 exclusion Effects 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 9
- 238000012885 constant function Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 4
- 230000033772 system development Effects 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 3
- 230000003993 interaction Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000002547 anomalous effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及实时嵌入式系统设备安全分析技术领域,特别涉及一种基于高级抽象层模拟的固件托管分析测试方法及系统,通过提取目标固件二进制可执行文件中函数信息;获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。本发明依据固件和高级抽象层模拟之间的映射关系并基于仿真模拟环境来执行固件模拟测试过程,无需构建固件本身的BSP包和设备驱动程序,提升动态调试固件的效率,便于嵌入式系统领域实际场景中的应用。
Description
技术领域
本发明涉及实时嵌入式系统设备安全分析技术领域,特别涉及一种基于高级抽象层模拟的固件托管分析测试方法及系统。
背景技术
固件托管(Firmware Re-Hosting)是将在特定硬件上运行的二进制文件运行在仿真的虚拟环境中的技术。基于目前研究人员在对固件分析时对动态分析的极大需求,该技术已被广泛应用于固件安全分析中。固件托管涵盖的技术面较广,涉及固件提取、系统仿真、固件测试等方面。目前系统仿真采用的主流方法构建固件的板级支持包(BSP)和设备驱动程序,修改固件自身结构以适配目前主流的虚拟环境。
针对航天电子、卫星通讯、工业控制等系统设备固件所搭载的主流系统VxWorks(以下统称操作系统)进行动态分析测试时,现有主流方法并不能很好地完成对该操作系统的模拟执行。因为其在执行过程中会发生大量的中断和待执行任务,同时固件在执行的过程中会需要开辟新的空间,使用patch的方式替换操作系统中原有的函数不能确保新生成的空间不会覆盖新添加的代码的空间。此外,基于BSP层的函数模拟需要考虑单个外设中的各个寄存器之间存在相互影响的问题,使得通过修改HAL/BSP层函数来对固件进行模拟执行前,必须要充分了解底层外设的交互逻辑,且不同的设备其外设可能完全不同,加大固件模拟执行的难度。
发明内容
为此,本发明提供一种基于高级抽象层模拟的固件托管分析测试方法及系统,依据固件和高级抽象层模拟之间的映射关系并基于仿真模拟环境来执行固件模拟测试过程,无需构建固件本身的BSP包和设备驱动程序,提升动态调试固件的效率,便于工控系统实际场景中的应用。
按照本发明所提供的设计方案,一方面,提供一种基于高级抽象层模拟的固件托管分析测试方法,包含:
提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,提取目标固件二进制可执行文件中函数信息,还包含:
基于设备信息构建设备MCU模板,依据目标固件格式提取目标固件符号表的首地址和尾地址并获取目标固件的基地址,其中,设备信息包括CPU型号和内存布局。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,获取固件实时操作系统静态库文件及静态库文件所编译的函数名,包含:
基于系统开发工具获取实时操作系统静态库文件及静态库文件所编译过的函数名。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,基于函数名提取目标固件所使用的实时操作系统库函数,包含:
依次根据函数名、函数字符串调用及函数反编译结果识别目标固件中所使用的实时操作系统库函数,并基于识别到的库函数及其在目标固件中的地址建立目标固件库函数映射表。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,利用预设等价函数替换目标固件中对应库函数之前,包含:
识别并定位对外设进行读写操作的库函数,基于污点分析跟踪标记该库函数起始变量,并依据目标固件中该库函数的上层调用关系确定所需替换的库函数地址。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,利用预设等价函数替换目标固件中对应库函数,包含:
基于函数功能将目标固件中库函数分组为若干函数模型组,所述若干函数模型组至少包括:常量函数、可变参数式函数、特殊功能函数及无作为函数;
依据各函数模型组对目标固件中对应库函数进行替换,该替换过程包括:重写常量函数返回值为确定常量;依据可变参数式函数的首个参数判断变量个数,并基于变量个数将可变参数式函数重写为多个固定参数的等价函数;依据固定数量的函数参数对特殊功能函数重写为功能等价函数;基于函数重写指令重写无作为函数,以在执行过程中跳过无作为函数执行。
作为本发明基于高级抽象层模拟的固件托管分析测试方法,进一步地,基于模拟器对目标固件中函数执行分析测试操作,还包括:
设置目标固件中函数被替换执行的监听线程,并在监听线程和执行线程之间建立互斥锁,以利用互斥锁使监听线程和执行线程分开进行。
进一步地,本发明还提供一种基于高级抽象层模拟的固件托管分析测试系统,包含:提取模块、重写模块和测试模块,其中,
获取模块,用于提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
重写模块,用于获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
测试模块,用于基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
本发明的有益效果:
1、本发明针对当前模拟执行过程中仅仅局限于一种特定的架构,或是因为硬件外设种类复杂而造成函数替代中同种类函数多次编写的问题,通过利用高级抽象的方式从实现重写基于主流Vxworks版本的库函数,利用函数监听使得固件在执行替换的过程中直接运行替换函数,从而保证固件在执行过程中的稳定并保证固件文件不被修改,以此完成固件在模拟器上的重新托管问题,并且实现用更少的工作量支持更多的固件托管,具有较好的应用前景。
2、本发明通过模拟执行模块和模糊测试工具的接口,在不带来额外较大开销的前提下,配合当前主流的Fuzz工具对系统中的应用程序进行模糊测试,可以和当前最好的模糊测试工具兼容,在原有测试工具的基础上进一步提升漏洞发现效率,便于实际场景中的应用。
附图说明:
图1为实施例中基于高级抽象层模拟的固件托管分析测试流程示意;
图2为实施例中固件托管分析测试原理示意;
图3为实施例中printf函数的拆分执行的例子示意;
图4为实施例中VxEmu监听流程示意;
图5为实施例中线程间资源占用图例示意。
具体实施方式:
为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
VxWorks实时操作系统具有可伸缩、可裁剪、高可靠性,且可同时适用于所有流行目标CPU平台,其系统架构包括Hardware硬件组件、BSP板级支持包组件、LowComponents低组件、Schedule日程组件、Driver驱动组件及HMI人机交互组件等。
本发明实施例,针对工控设备固件所搭载的主流系统VxWorks的动态分析测试,将VxWorks系统中的BSP板级支持包组件、LowComponents低组件、Schedule日程组件、Driver驱动组件及HMI人机交互组件的各层级按需进行高级抽象层模拟,参见图1所示,提供一种基于高级抽象层模拟的固件托管分析测试方法,包含如下内容:
S101、提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况。
可基于设备信息构建设备MCU模板,依据目标固件格式提取目标固件符号表的首地址和尾地址并获取目标固件的基地址,其中,设备信息包括CPU型号和内存布局。
在预处理阶段,获取到设备中的基本信息如CPU型号、内存布局等构建基本的设备MCU模板。同时,如果固件为VxWorks私有协议格式,将需要提取出固件的符号表的首地址和尾地址,并计算出固件的基地址,为后续恢复固件的函数名称做准备。
S102、获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数。
参见图2所示,利用获得到的函数调用和相关服务的基本信息,进行高级抽象层的函数匹配,基于主流的Windriver系统开发工具,获得到系统库中的静态库文件和这些文件所有编译过的函数名称,并通过函数名和固件中本身的函数名进行比对从而判断当前的设备固件使用了哪些系统库函数。将提取出来的固件库函数映射表和预处理阶段得到的信息交给QEMU形成固件的MCU执行文件,进而启动配置好的qemu虚拟环境进行固件托管。
其中,基于函数名提取目标固件所使用的实时操作系统库函数,可包含:
依次根据函数名、函数字符串调用及函数反编译结果识别目标固件中所使用的实时操作系统库函数,并基于识别到的库函数及其在目标固件中的地址建立目标固件库函数映射表。
考虑到固件文件的格式并不一定是标准的ELF格式文件,VxWorks系统本身存在其专有文件格式,因此在进行固件库函数识别之前需要对固件文件格式进行确定。对于VxWorks专有的可执行文件格式,将通过在预处理过程中获取到的符号表首尾地址和基址地址这些信息导入到系统中。最终将会获得一个系统库函数名称和其在固件中地址的映射表。
考虑到不是所有固件中的函数都有符号信息,为了能尽可能多地实现函数匹配,可利用如下两种方法实现:首先,大部分库函数通常会存在字符串调用的情况,利用这一点,在收集库函数的过程中将其所调用的字符串也放入映射表中作为匹配的一部分。通过检查固件中未匹配函数所调用的字符串是否有相同的调用并查看其上下文调用是否和库函数的相匹配从而识别这些库函数。对于没有任何字符串调用的函数,可利用bindiff反汇编工具对此类函数和固件函数本身进行相似性匹配,当两者之间的置信度大于预设阈值,例如95%,则认为是匹配函数。通过以上方式能够识别出近乎所有的VxWorks实时操作系统的系统库函数。
其中,利用预设等价函数替换目标固件中对应库函数之前,还可包含:
识别并定位对外设进行读写操作的库函数,基于污点分析跟踪标记该库函数起始变量,并依据目标固件中该库函数的上层调用关系确定所需替换的库函数地址。
具体地,利用预设等价函数替换目标固件中对应库函数,可设计为包含如下内容:
基于函数功能将目标固件中库函数分组为若干函数模型组,所述若干函数模型组至少包括:常量函数、可变参数式函数、特殊功能函数及无作为函数;
依据各函数模型组对目标固件中对应库函数进行替换,该替换过程包括:重写常量函数返回值为确定常量;依据可变参数式函数的首个参数判断变量个数,并基于变量个数将可变参数式函数重写为多个固定参数的等价函数;依据固定数量的函数参数对特殊功能函数重写为功能等价函数;基于函数重写指令重写无作为函数,以在执行过程中跳过无作为函数执行。
基于获得的系统库函数映射表,将其中需要替换的库函数进行重新编写。观察发现使用VxWorks固件的设备其硬件种类繁杂多样,但是固件版本通常较为固定。因此,通过对固件版本进行替换和处理的方法效率远高于对硬件设备的BSP函数进行替换。根据原函数本身的功能划分为如下四种:
常量函数:该类函数通常仅用于低耦合的外设初始化函数,如LED的初始化等,此类函数不会影响整体的代码逻辑,但返回值会影响固件的执行流分支,因此要返回一个确定常量
可变参数式函数:该类参数的数量是不固定的,在构建替换函数时较为复杂,因为系统并不能识别其具体有多少个参数,所以在调用函数的过程中只能将每一种可能均列出来。如图3所示,基于printf函数的实例,发现可变参数的函数其首个参数通常是可显字符串,因此可以通过第一个参数来判断后续的变量个数,将一个变参函数变成多个只有两个参数的固定参数函数执行。
特殊功能函数:该类函数拥有对实际硬件设备进行读取和写入的功能,但又不同于变参函数。该类函数的参数数量相对固定,因此只要能够获取到这些参数即可对特殊功能函数进行重新编写和替换。
无作为函数:无作为函数其主要是在整体系统中,其被使用次数极少并且功能并不重要的函数,因此可以在监听过程中直接将此类函数跳过。
基于上千个识别出的库函数,发现只有对外设进行操作也就是存在使用MMIO内存映射I/O区域的变量才需要进行函数替换。可通过污点分析的方法,跟踪标记函数中的起始变量,并获得这些函数的上层调用链,根据得到的上层调用关系来最终确定到底要替换哪一个函数。
S103、基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
基于模拟器QEMU能够完整地模拟计算机系统,包括硬件和固件,通过硬件初始化、引导加载程序,以提供固件接口和模拟硬件特性等。在分析测试操作中,可通过QMP协议,利用fuzzing模糊测试工具发送命令给QEMU,控制虚拟机的启动、暂停、恢复等操作,并设置虚拟硬件设备的参数。使fuzzing工具可以利用QEMU的虚拟化环境来运行目标系统,并向其注入随机或异常的输入数据。
可通过设置目标固件中函数被替换执行的监听线程,并在监听线程和执行线程之间建立互斥锁,以利用互斥锁使监听线程和执行线程分开进行。
当虚拟系统成功仿真出固件环境后,利用监听进程对目标函数进行监听并在目标函数被执行时将执行流导向替换函数,从而实现函数的拦截功能。当进行固件托管的过程中,QEMU将会启用监听函数,监听过程如图4所示,监听函数会在执行的过程中不断地监听当前的固件执行流情况,当程序计数寄存器(PC)的值为需要替换的函数的首地址时,监听函数就会拦截该函数并开始执行替换函数;同时将固件的PC寄存器的值换成LR(LinkRegister,连接寄存器)中的值。
针对固件模拟运行过程中错误或者崩溃产生的原因,有一种情况是所替换的函数参数的值不正确。其根本原因是由于监听线程和QEMU自身的执行线程之间存在资源占用的问题,VxEmu在监听到目标函数并进行替换后,替换函数和执行线程在同时进行,两者经常会对同一内存地址或寄存器值进行读或者写操作,使得替换函数并不能正常运行,如图5所示。因此要对监听线程和执行线程直接建立互斥锁,在执行监听线程的过程中,执行线程会暂停;相反的,执行线程在运行的时候,监听线程会停止其替换函数的执行。并且互斥锁需要在固件指令在被翻译之前构建,这是因为在QEMU在执行过程中,首先会将固件的指令进行翻译而后再做执行,因此如果再翻译之后构建互斥锁会导致固件仍然会执行原函数中的指令。
具体的实现过程可描述如下:通过在cpu_exec.c文件中设置一个全局变量vx_sem,对QEMU的基本块执行函数cpu_exec和na400pro的监听函数pc_read中进行配置,当pc_read开始执行的时候会将vx_sem置为1,此时cpu_exec函数收到当前为1的数据则不能执行,同时当pc_read执行完毕后,将会把vx_sem置0,从而pc_read将不能继续执行,确保了监听线程和执行线程完全不会冲突。cpu_exec的执行过程同理。
QEMU本身编译也可能导致问题。在正常构建出固件模拟文件并编译后,QEMU的监听线程无法获取到当前固件的PC值,这是因为其存储PC值的结构体CPUArch在编译过程中被优化掉了。因此对于每一个需要监听的MCU,在编译的时候要在build.njan文件中的-O2转为-O0,防止CPUArch数据结构被优化掉导致程序无法正常执行。第三个问题是作用域的问题,由于有些函数之间存在互相关联的关系,部分变量可能需要作为全局变量或者在堆中存放,以确保函数之间能够正常执行。
针对于VxWorks在初始化的时候会注册相关功能的中断函数,一部分可以通过函数替换的方法有效地解决,然而对于持续执行的中断函数,则需要进行相关配置。研究发现,VxWorks针对时钟存在其专门的配置方法,通过sysClkInit函数注册sysClkInt中断处理程序来处理其中的时钟变量,然而对时钟变量进行实际处理的函数为windTickAnnounce,因此只要能够获取到windTickAnnounce中所处理的时钟变量即可。在windTickAnnounce中,其时钟变量在程序的前部并会被直接累加一次,因此,可根据这个规律可以找到其对应的时钟变量,同时在找到该时钟变量后,通过Linux自身的时钟函数即可模拟时钟变量。
针对VxWorks中的FTP、Telnet等功能而言,其本身并不是中断函数的一部分,通过将socket套接字进行模拟即可使得FTP、Telnet等功能能够正常使用。
进一步地,基于上述的方法,本发明实施例还提供一种基于高级抽象层模拟的固件托管分析测试系统,包含:提取模块、重写模块和测试模块,其中,
获取模块,用于提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
重写模块,用于获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
测试模块,用于基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的各实例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已按照功能一般性地描述了各示例的组成及步骤。这些功能是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不认为超出本发明的范围。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如:只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于高级抽象层模拟的固件托管分析测试方法,其特征在于,包含:
提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
2.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,提取目标固件二进制可执行文件中函数信息,还包含:
基于设备信息构建设备MCU模板,依据目标固件格式提取目标固件符号表的首地址和尾地址并获取目标固件的基地址,其中,设备信息包括CPU型号和内存布局。
3.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,获取固件实时操作系统静态库文件及静态库文件所编译的函数名,包含:
基于系统开发工具获取实时操作系统静态库文件及静态库文件所编译过的函数名。
4.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,基于函数名提取目标固件所使用的实时操作系统库函数,包含:
依次根据函数名、函数字符串调用及函数反编译结果识别目标固件中所使用的实时操作系统库函数,并基于识别到的库函数及其在目标固件中的地址建立目标固件库函数映射表。
5.根据权利要求1或4所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,利用预设等价函数替换目标固件中对应库函数之前,包含:
识别并定位对外设进行读写操作的库函数,基于污点分析跟踪标记该库函数起始变量,并依据目标固件中该库函数的上层调用关系确定所需替换的库函数地址。
6.根据权利要求1或4所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,利用预设等价函数替换目标固件中对应库函数,包含:
基于函数功能将目标固件中库函数分组为若干函数模型组,所述若干函数模型组至少包括:常量函数、可变参数式函数、特殊功能函数及无作为函数;
依据各函数模型组对目标固件中对应库函数进行替换,该替换过程包括:重写常量函数返回值为确定常量;依据可变参数式函数的首个参数判断变量个数,并基于变量个数将可变参数式函数重写为多个固定参数的等价函数;依据固定数量的函数参数对特殊功能函数重写为功能等价函数;基于函数重写指令重写无作为函数,以在执行过程中跳过无作为函数执行。
7.根据权利要求1所述的基于高级抽象层模拟的固件托管分析测试方法,其特征在于,基于模拟器对目标固件中函数执行分析测试操作,还包括:
设置目标固件中函数被替换执行的监听线程,并在监听线程和执行线程之间建立互斥锁,以利用互斥锁使监听线程和执行线程分开进行。
8.一种基于高级抽象层模拟的固件托管分析测试系统,其特征在于,包含:提取模块、重写模块和测试模块,其中,
获取模块,用于提取目标固件二进制可执行文件中函数信息,所述函数信息包括函数名、函数调用次数及服务开启情况;
重写模块,用于获取固件实时操作系统静态库文件及静态库文件所编译的函数名,基于函数名提取目标固件所使用的实时操作系统库函数,并利用预设等价函数替换目标固件中对应库函数,所述预设等价函数为与对应库函数功能等价的重写函数;
测试模块,用于基于模拟器对目标固件中函数执行分析测试操作,得到目标固件分析测试结果。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
10.一种电子设备,其特征在于,包括:
至少一个处理器,以及与所述至少一个处理器耦合连接的存储器;
其中,所述存储器存储有计算机程序,所述计算机程序能够被所述至少一个处理器执行,以实现如权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311844799.8A CN118012567A (zh) | 2023-12-29 | 2023-12-29 | 基于高级抽象层模拟的固件托管分析测试方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311844799.8A CN118012567A (zh) | 2023-12-29 | 2023-12-29 | 基于高级抽象层模拟的固件托管分析测试方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118012567A true CN118012567A (zh) | 2024-05-10 |
Family
ID=90944010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311844799.8A Pending CN118012567A (zh) | 2023-12-29 | 2023-12-29 | 基于高级抽象层模拟的固件托管分析测试方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118012567A (zh) |
-
2023
- 2023-12-29 CN CN202311844799.8A patent/CN118012567A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cifuentes et al. | Binary translation: Static, dynamic, retargetable? | |
US9697109B2 (en) | Dynamically configurable test doubles for software testing and validation | |
CN111796831B (zh) | 一种多芯片兼容的编译方法和装置 | |
Kinder et al. | Precise static analysis of untrusted driver binaries | |
CN104077204B (zh) | 可重构的8位rsic单片机仿真器 | |
CN110245467B (zh) | 基于Dex2C与LLVM的Android应用程序保护方法 | |
US8230402B2 (en) | Testing and debugging of dynamic binary translation | |
Lacamera | Embedded Systems Architecture: Explore architectural concepts, pragmatic design patterns, and best practices to produce robust systems | |
CN104699523A (zh) | 用于硬件平台所开发的应用程序的调试方法和系统 | |
CN107766602A (zh) | 技术系统的运行软件的修正和仿真 | |
CN112882718A (zh) | 编译处理方法、装置、设备及存储介质 | |
CN110637521B (zh) | 一种基于模型仿真的数据实时存储方法和系统 | |
CN112631915B (zh) | 一种pcie设备软件仿真的方法、系统、设备及介质 | |
US20180364991A1 (en) | Method and system for preparing code to be executed by programmable control devices | |
CN104317723A (zh) | 一种驱动程序运行信息的跟踪方法及系统 | |
CN109144849B (zh) | 一种嵌入式软件调测方法 | |
CN118012567A (zh) | 基于高级抽象层模拟的固件托管分析测试方法及系统 | |
Yang et al. | Kernelgpt: Enhanced kernel fuzzing via large language models | |
CN113836023B (zh) | 一种基于体系结构交叉检查的编译器安全性测试方法 | |
US7752030B2 (en) | Virtualization as emulation support | |
CN102508697B (zh) | 一种Java实现8位嵌入式CPU仿真运行环境的方法 | |
CN112559336A (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
US20230093197A1 (en) | Generating executables for target operational environments | |
CN103593320B (zh) | 多处理器系统、装置和方法 | |
Dovland et al. | Tracking behavioral constraints during object-oriented software evolution |
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 |