CN111752829A - 嵌入式系统固件程序的动态调试方法 - Google Patents

嵌入式系统固件程序的动态调试方法 Download PDF

Info

Publication number
CN111752829A
CN111752829A CN202010575716.XA CN202010575716A CN111752829A CN 111752829 A CN111752829 A CN 111752829A CN 202010575716 A CN202010575716 A CN 202010575716A CN 111752829 A CN111752829 A CN 111752829A
Authority
CN
China
Prior art keywords
firmware program
code
segment
interface
program
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
Application number
CN202010575716.XA
Other languages
English (en)
Other versions
CN111752829B (zh
Inventor
胡平
顾雪峰
刘杰峰
刘凯
张林森
杨迎化
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Naval University of Engineering PLA
Original Assignee
Naval University of Engineering PLA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Naval University of Engineering PLA filed Critical Naval University of Engineering PLA
Priority to CN202010575716.XA priority Critical patent/CN111752829B/zh
Publication of CN111752829A publication Critical patent/CN111752829A/zh
Application granted granted Critical
Publication of CN111752829B publication Critical patent/CN111752829B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出了一种嵌入式系统固件程序的动态调试方法,该方法通过构建固件程序虚拟运行环境,利用直接修改固件程序的二进制机器码的手段,实现对QNX操作系统下的嵌入式主板的固件程序进行无外设的模拟动态运行,解决了传统方式下,环境构建周期长,构建成本高的缺点,可用于无源码的嵌入式主板固件程序的原理分析、故障排查、板件研仿等工作。

Description

嵌入式系统固件程序的动态调试方法
技术领域
本发明属于嵌入式系统软件技术领域,具体涉及一种嵌入式系统固件程序的动态调试方法。
背景技术
目前,国内存在较多进口设备,设备中使用大量嵌入式板卡,而针对板卡固件的调试通常采用两种方法;方法一为在齐套的设备中进行调试,本方法存在的问题是调试难度大,且很多边界条件在实际设备中是无法产生的;另一种方法是构建外部数据仿真平台,但此方法的构建成本大,构建周期长,不能适应局部、小范围的调试分析。
而针对QNX实时操作系统的嵌入式主板的固件程序的调试,目前也只有这两种方法。
发明内容
本发明要解决的技术问题是提供一种无需无外部设备和仿真环境条件的嵌入式系统固件程序的调试方法。
针对上述技术问题,本发明提出一种嵌入式系统固件程序的动态调试方法,该方法针对QNX实时操作系统的嵌入式板卡中的固件程序,在无外部设备和仿真环境的条件下,只需借助PC机环境,即可开展软件动态调试,完成嵌入式板卡固件程序的调试分析。
本发明提出的方法包括如下具体步骤:
步骤1、构建固件程序虚拟运行环境
步骤11、利用WMware虚拟机工具,在PC机端创建QNX实时操作系统的运行环境;
步骤12、在所述PC机端安装QNX操作系统,构建所述固件程序的虚拟运行环境;
步骤13、将所述固件程序安装到步骤12构建的所述固件程序的虚拟运行环境中;
步骤2、修改所述固件程序的二进制代码,以保证嵌入式主板固件在启动后能够执行到功能代码中;
步骤21、通过阅读所述固件程序反汇编后的汇编代码,根据固件程序的执行顺序,逐行查找出校验和检验功能代码,并修改所述固件程序的二进制代码,跳过所述校验和检验功能代码;
步骤22、通过阅读所述固件程序反汇编后的汇编代码,判断在所述固件程序中是否存在软件防盗版保护,如果存在所述软件防盗版保护,则根据保护的方式和强度,剔除所述软件防盗版保护;
步骤23、计算所述固件程序反汇编后的汇编代码中监控校验代码的字节数,使用jmp指令和多个nop指令替换所述监控校验代码;
步骤24、检查所述固件程序反汇编后的汇编代码中的配置代码,如果所述配置代码存在逻辑判断,影响所述固件程序在虚拟环境中的执行,则修改所述固件程序的二进制代码,使所述固件程序跳过所述配置代码;
步骤25、检查所述固件程序反汇编后的汇编代码中的外设检测与初始化代码,通过跳转指令跳过所述代码,或者保留所述外设检测与初始化代码,通过重定向对外接口,利用接口数据模拟环境构造消息,提供所述检测和初始化代码执行所需的数据;
步骤3、重定向接口地址,构建接口数据软件模拟环境,包括如下步骤:
步骤31、利用所述固件程序反汇编后的汇编代码,定位接口API函数;
步骤32、重定向所述接口API函数的接口地址,扩充代码段和数据段空间,在所述代码段和数据段空间编写代码,实现与信号仿真程序的通信,模拟外部接口数据;
步骤33、在新的空间内插入进程间的交互代码和协议处理代码,通过与新开发的仿真程序进行进程间通信的方式,模拟外部接口通信;
步骤4、破译接口协议,模拟接口协议
步骤41、利用所述固件程序反汇编后的汇编代码,反向跟踪接口变量所有调用位置,根据所述接口的使用方式,人工识别所述接口协议的格式,破译出所述接口协议;
步骤42、根据步骤41破译的所述接口协议,自主开发软件,模拟所述接口协议,驱动固件程序运行;
步骤5、启动所述固件程序,按需插入调试点,开展对所述固件程序的调试
步骤51启动所述固件程序,所述固件程序正常运行;
步骤52、根据工作的目标,在软件中插入调试点,采用屏幕打印和文件输出的方式,观察调试点的状态,实现对所述固件程序的调试。
优选的,所述步骤31中定位接口API函数,包括如下具体步骤:
首先,根据已有的通用的API函数源码构建签名库,然后使用反汇编工具自动分析和识别所述接口API函数;如果识别不出所述接口API函数,则确定所述接口API函数为开发者自定义,则根据所述接口API函数存在的特征,初步定位所述接口API函数;然后,再根据所述接口API函数变量访问的关联关系,确定出整个API函数组。
优选的,所述步骤32中扩充代码段和数据段空间,包括如下具体步骤:
查看所述固件程序反汇编后的汇编代码最后一个字段是否已满,如果已满,则需开辟新的段;如果未满,计算剩余空间是否够用,如不够用,则开辟新的段。
优选的,所述开辟新的段包括扩展最后一个代码段和增加段;
扩展最后一个代码段包括如下操作:修改所述代码段的段头,以改变所述段的大小,并在所述代码段的末端插入“0xFF”字节,然后再修改文件头中的文件大小;
所述增加段包括如下操作:在文件头中修改段的个数,并构建新段的文件头,然后修改最后一个段的段头,修改所述段的大小,插入“0xFF”字节。
优选的,步骤32中扩充LMF格式程序数据段方法为:
直接在文件头中修改数据段地址和大小。
与现有技术相比,本发明的效果如下:
本发明提出了一种QNX实时操作系统下的固件程序的调试方法,通过构建固件程序虚拟运行环境,利用直接修改二进制机器码的手段,实现对QNX操作系统下的嵌入式主板的固件程序进行无外设的模拟动态运行,解决了传统方式下,环境构建周期长,构建成本高的缺点,可用于无源码的嵌入式主板固件程序的原理分析、故障排查、板件研仿等工作。
附图说明
图1是本发明实施例中上位机与下位机的通信流程图;
图2是本发明实施例中固件程序1T的执行流程;以及
图3是本发明实施例的嵌入式固件程序动态调试方法流程图。
具体实施方式
以下,参照附图对本发明的实施方式进行说明。
本实施例是由上位机和下位机组成的控制系统,上位机采用奔腾Ⅲ处理器的嵌入式主板,下位机为A/D转换模块,通信总线为1553B总线,固件程序产生的控制指令,通过1553B网络传入下位机;下位机产生的状态指令,通过1553B网络传入固件程序,其通信流程如图1所示。
本实施例中的固件程序为1T、大小为219KB,该固件程序内包含控制算法,根据下位机返回的状态指令,自动生成控制指令,并发送给下位机,如图2所示。
本发明实施例提出的嵌入式系统固件程序的动态调试方法,其处理流程如图3所示,包括如下具体步骤:
步骤1、构建固件程序虚拟运行环境
固件程序的运行环境是嵌入式主板,但在嵌入式环境中,不仅软件的修改、运行等存在诸多限制,甚至很多安装嵌入式主板的环境都没有人机交互终端,无法实现调试监控,因此需在PC机端构建固件程序的虚拟运行环境,作为后续工作的基础;
步骤11、利用WMware 7.0虚拟机工具,在PC机端创建QNX实时操作系统运行环境1T_VM;
步骤12、在PC机端安装QNX 4.25操作系统,并安装Watcom 10.6编译器组件和PhotonApplication Builder组件,构建固件程序运行环境;
步骤13、将备份的固件程序1T,安装到1T_VM环境中;
步骤2、修改固件程序的二进制代码,跳过校验、初始外设状态检测代码;
嵌入式主板固件在启动时,通常会进行启动校验、看门狗校验、各种外接设备的初始状态校验等工作,因此在无外部设备的条件下,通过修改二进制代码,跳过各类校验与检验,按需设定各种状态值,保证固件程序执行到功能代码中;
QNX实时操作系统下的程序格式为LMF格式,该格式由文件头、数据段、代码段和资源段等组成;在文件头中限定各个段的组成方式和大小;文件头中未包含重定位表,jmp、jz、jnz、js等调整指令不需重定位,使用的是绝对地址偏移;在修改固件程序的二进制代码时,可以根据需要修改的代码功能,决定是否修改文件头,并按照以下步骤进行修改:
步骤21、软件在启动过程中常见的校验和检验功能包括软件保护校验、看门狗/定时器监控校验、板卡配置、外设检测与初始化;使用IDA 5.5反汇编1T程序文件,1T的执行流程见图2;发现在启动过程中存在启动信号等待代码,使用Winhex二进制文件编辑工具,将地址0x27A49地址的JNZ指令、机器码为75D1,改为JMP指令、机器码为EB C5,跳过启动信号等待过程,在程序加载后,直接启动代码功能。
步骤22、软件防盗版保护一般与软件功能无关,受算力等限制,嵌入式固件程序一般不采用软件防盗版保护,而是通过芯片的硬件保护,来防止软件被逆向;使用IDA5.5反汇编1T程序文件,在1T程序文件中,未找到软件防盗版保护;
步骤23、看门狗/定时器等监控校验,一般也与软件功能无关,主要是实现软件的自我恢复功能,在软件工作异常情况下,通过定时限定,软件自动重启,防止因为缺陷导致软件进入死循环;使用IDA 5.5反汇编1T程序文件,在1T程序文件中,未找到看门狗/定时器等监控校验;
步骤24、在嵌入式固件程序启动时,需要对固件引脚、板卡上器件等进行配置,由于我们已经将固件放入虚拟环境中,此类配置无具体意义,但为防止后续程序会调用,此处仍保留配置代码;如果配置代码存在逻辑判断,影响程序在虚拟环境中的执行,则修改机器码,使程序跳过配置代码,执行到正常流程;使用IDA 5.5反汇编1T程序文件,在1T程序文件中,未发现影响程序执行的引脚、器件等配置;
步骤25、外设检测与初始化,通过与外部设备进行握手交互,相互验证对方的状态十分良好,并发送相关指令对外部设备进行初始化,此类功能有两种处理方法:方法一,利用跳转指令跳过该段代码;方法二,保留该段代码,通过重定向对外接口,利用接口数据模拟环境构造消息,完成检测和初始化代码执行所需的数据;使用IDA 5.5反汇编1T程序文件,在1T程序文件中sub_A0F8函数内,存在对1553B卡进行初始化的代码,通过跳转指令直接跳过该段代码;本实施例采用方法一,利用跳转指令跳过该代码段;
步骤3、重定向接口地址,构建接口数据软件模拟环境;
一般嵌入式主板中的固件程序的功能是外设数据的处理和对外设的控制,其核心是接口数据,而嵌入式主板的接口多种多样,如串口、并口、以太网口、1553B接口等,在没有对应接口的外部设备情况下,通过在软件中修改代码,重定向各接口地址,通过软件构建各接口的数据,实现通信功能。
固件程序对于各接口的访问和控制通常是使用专用API函数,并在程序中分配出固定的内存空间存放,并使用相关中断作为接口状态出发条件,且很多中断是由硬件触发器触发;因此,通过将API函数的地址和中断向量函数的地址重定向到新的空间,并在空间构造功能代码,通过程序中支持的进程间通信方式,模拟外部信号的收发功能。
步骤31、定位接口API函数,反汇编固件程序,先根据已有的通用的API函数源码构建签名库,然后使用反汇编工具自动分析和识别;如果识别不出,则可确定该接口函数为开发者自定义,则根据接口API函数存在的特征,定位接口函数;例如串口的API会存在配置波特率、打开端口等操作,以太网口存在IP地址或MAC地址的相关操作,1553B网络则存在固定的初始化操作;定位到其某个函数后,根据其变量访问的关联关系,可确定出整个API函数组;
本实施例中,反汇编1T固件程序、NET_R程序和NET_W程序,使用IDA自带的QNX4.25签名库,识别出三个程序交互的接口程序为sub_EAB9()、sub_16A78()、QNX_NAME_LOCATE()、Send()、Receive()函数;
步骤32、QNX操作系统下LMF格式程序代码段在二进制文件中有真实的空间,在文件头中有代码段的位置和大小等相关信息,LMF中的代码段由多个字段组成,每个字段最大空间是固定的,首先要查看最后一个字段是否已满,如果已满,则需开辟新的段;如果未满,计算剩余空间是否够用,如不够用,则还需开辟新的段;扩展最后一个段的方法是修改最后一个段的段头,修改段的大小的值,在原值基础上替换新增加的值,并插入相同的0xFF字节,然后再修改文件头中的文件大小;增加段,则需在文件头中修改段的个数,并构建新段的文件头,然后采用与上述相同的方法,插入0xFF字节;对于数据段,由于插入的变量无需初始化,因此二进制文件中没有真实的空间,只有文件头中定义的地址和大小,修改此处即可;
本实施例中,重定向接口地址后,在NET_R程序中,将0x142地址的“/CSM/main..”字符串修改为“2T..”字符串;在NET_W程序中,将0x11E地址的“/CSM/main..”字符串修改为“2T..”字符串;
步骤33、接口函数为进程间通信的Send和Receive函数,不需更换。
步骤4、破译接口协议,模拟接口协议
步骤41、反汇编1T固件程序,从接口逆向追踪协议的格式,破译出接口协议为:
信号 字节1 字节2 字节3 字节4 字节5 字节6
OTV_T 信号标识位 状态位 状态位 状态位 状态位 状态位
T_MASS 信号标识位 控制指令 控制指令 控制指令 控制指令 控制指令
步骤42、编写外部信号仿真程序2T,使用进程间消息通信机制,与NET_R和NET_W进行通信,模拟外部数据,
步骤5、启动软件,按需插入调试点,开展软件调试
步骤51、启动1T程序和2T程序,完成1T程序模拟运行;
步骤52、在1T固件程序的Send和Receive函数中,加入fprint函数,向OTV_T.txt和T_MASS.txt中写入实时通信数据。
以上所述的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

Claims (5)

1.一种嵌入式系统固件程序的动态调试方法,其特征在于,其包括如下操作步骤:
步骤1、构建固件程序虚拟运行环境;
步骤11、利用WMware虚拟机工具,在PC机端创建QNX实时操作系统的运行环境;
步骤12、在所述PC机端安装QNX操作系统,构建所述固件程序的虚拟运行环境;
步骤13、将所述固件程序安装到步骤12构建的所述固件程序的虚拟运行环境中;
步骤2、修改所述固件程序的二进制代码,以保证嵌入式主板固件在启动后能够执行到功能代码中;
步骤21、通过阅读所述固件程序反汇编后的汇编代码,根据固件程序的执行顺序,逐行查找出校验和检验功能代码,并修改所述固件程序的二进制代码,跳过所述校验和检验功能代码;
步骤22、通过阅读所述固件程序反汇编后的汇编代码,判断在所述固件程序中是否存在软件防盗版保护,如果存在所述软件防盗版保护,则根据保护的方式和强度,剔除所述软件防盗版保护;
步骤23、计算所述固件程序反汇编后的汇编代码中监控校验代码的字节数,使用jmp指令和多个nop指令替换所述监控校验代码;
步骤24、检查所述固件程序反汇编后的汇编代码中的配置代码,如果所述配置代码存在逻辑判断,影响所述固件程序在虚拟环境中的执行,则修改所述固件程序的二进制代码,使所述固件程序跳过所述配置代码;
步骤25、检查所述固件程序反汇编后的汇编代码中的外设检测与初始化代码,通过跳转指令跳过所述代码,或者保留所述外设检测与初始化代码,通过重定向对外接口,利用接口数据模拟环境构造消息,提供所述检测和初始化代码执行所需的数据;
步骤3、重定向接口地址,构建接口数据软件模拟环境,包括如下步骤:
步骤31、利用所述固件程序反汇编后的汇编代码,定位接口API函数;
步骤32、重定向所述接口API函数的接口地址,扩充代码段和数据段空间,在所述代码段和数据段空间编写代码,实现与信号仿真程序的通信,模拟外部接口数据;
步骤33、在新的空间内插入进程间的交互代码和协议处理代码,通过与新开发的仿真程序进行进程间通信的方式,模拟外部接口通信;
步骤4、破译接口协议,模拟接口协议
步骤41、利用所述固件程序反汇编后的汇编代码,反向跟踪接口变量所有调用位置,根据所述接口的使用方式,人工识别所述接口协议的格式,破译出所述接口协议;
步骤42、根据步骤41破译的所述接口协议,自主开发软件,模拟所述接口协议,驱动固件程序运行;
步骤5、启动所述固件程序,按需插入调试点,开展对所述固件程序的调试
步骤51启动所述固件程序,所述固件程序正常运行;
步骤52、根据工作的目标,在软件中插入调试点,采用屏幕打印和文件输出的方式,观察调试点的状态,实现对所述固件程序的调试。
2.根据权利要求1所述的嵌入式系统固件程序的动态调试方法,其特征在于,所述步骤31中定位接口API函数,包括如下具体步骤:
首先,根据已有的通用的API函数源码构建签名库,然后使用反汇编工具自动分析和识别所述接口API函数;如果识别不出所述接口API函数,则确定所述接口API函数为开发者自定义,则根据所述接口API函数存在的特征,初步定位所述接口API函数;然后,再根据所述接口API函数变量访问的关联关系,确定出整个API函数组。
3.根据权利要求1所述的嵌入式系统固件程序的动态调试方法,其特征在于,所述步骤32中扩充代码段和数据段空间,包括如下具体步骤:
查看所述固件程序反汇编后的汇编代码最后一个字段是否已满,如果已满,则需开辟新的段;如果未满,计算剩余空间是否够用,如不够用,则开辟新的段。
4.根据权利要求3所述的嵌入式系统固件程序的动态调试方法,其特征在于,所述开辟新的段包括扩展最后一个代码段和增加段;
扩展最后一个代码段包括如下操作:修改所述代码段的段头,以改变所述段的大小,并在所述代码段的末端插入“0xFF”字节,然后再修改文件头中的文件大小;
所述增加段包括如下操作:在文件头中修改段的个数,并构建新段的文件头,然后修改最后一个段的段头,修改所述段的大小,插入“0xFF”字节。
5.根据权利要求1所述的嵌入式系统固件程序的动态调试方法,其特征在于,步骤32中扩充LMF格式程序数据段方法为:
直接在文件头中修改数据段地址和大小。
CN202010575716.XA 2020-06-22 2020-06-22 嵌入式系统固件程序的动态调试方法 Active CN111752829B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010575716.XA CN111752829B (zh) 2020-06-22 2020-06-22 嵌入式系统固件程序的动态调试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010575716.XA CN111752829B (zh) 2020-06-22 2020-06-22 嵌入式系统固件程序的动态调试方法

Publications (2)

Publication Number Publication Date
CN111752829A true CN111752829A (zh) 2020-10-09
CN111752829B CN111752829B (zh) 2022-10-14

Family

ID=72675676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010575716.XA Active CN111752829B (zh) 2020-06-22 2020-06-22 嵌入式系统固件程序的动态调试方法

Country Status (1)

Country Link
CN (1) CN111752829B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040250244A1 (en) * 2003-06-03 2004-12-09 Albrecht Gregory F. Systems and methods for providing communication between a debugger and a hardware simulator
CN105046117A (zh) * 2015-06-30 2015-11-11 西北大学 一种具有指令集随机化的代码虚拟化软件保护系统
CN105787368A (zh) * 2016-02-26 2016-07-20 武汉大学 一种基于函数置乱的rop防御方法与装置
CN107291480A (zh) * 2017-08-15 2017-10-24 中国农业银行股份有限公司 一种函数调用方法及装置
KR101972825B1 (ko) * 2019-01-18 2019-04-30 한국과학기술원 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040250244A1 (en) * 2003-06-03 2004-12-09 Albrecht Gregory F. Systems and methods for providing communication between a debugger and a hardware simulator
CN105046117A (zh) * 2015-06-30 2015-11-11 西北大学 一种具有指令集随机化的代码虚拟化软件保护系统
CN105787368A (zh) * 2016-02-26 2016-07-20 武汉大学 一种基于函数置乱的rop防御方法与装置
CN107291480A (zh) * 2017-08-15 2017-10-24 中国农业银行股份有限公司 一种函数调用方法及装置
KR101972825B1 (ko) * 2019-01-18 2019-04-30 한국과학기술원 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램

Also Published As

Publication number Publication date
CN111752829B (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
Scharnowski et al. Fuzzware: Using precise {MMIO} modeling for effective firmware fuzzing
CN100555218C (zh) 用于改善片上仿真系统中高级语言的仿真速度的装置和方法
US5978584A (en) Debugging apparatus for debugging a program by changing hardware environments without changing program operation state
US7739698B2 (en) Multiplatform API usage tool
US6158045A (en) Portable debugging services utilizing a client debugger object and a server debugger object with flexible addressing support
Gui et al. Firmcorn: Vulnerability-oriented fuzzing of iot firmware via optimized virtual execution
WO2015072689A1 (ko) 안티디버깅 방법
US20140033177A1 (en) Multi-platform test automation enhancement
US8645938B2 (en) System and method for replacing code
US7716642B1 (en) Techniques for detecting coding incompatibilities
US10042658B1 (en) Automatically adding bytecode to a software application to determine network communication information
CN112463614A (zh) 一种基于硬件板卡接入的软件虚拟化测试环境构建方法
CN104978261A (zh) 应用程序的测试方法、装置及系统
CN103645945A (zh) 一种虚拟网卡的自动探测及驱动加载方法
CN111708662B (zh) 调试方法及装置
US7908596B2 (en) Automatic inspection of compiled code
WO2022017242A1 (zh) 在第一系统运行第二系统应用的方法、装置、设备及介质
CN104199716A (zh) 一种虚拟机热迁移的方法、物理主机及系统
CN111752829B (zh) 嵌入式系统固件程序的动态调试方法
CN111831395B (zh) 一种行为监控分析方法与系统
CN112631915A (zh) 一种pcie设备软件仿真的方法、系统、设备及介质
Tang et al. When virtualization encounter AFL
US20060080636A1 (en) Method of building intelligent platform management interface firmware architecture
US7539839B1 (en) Method to test error recovery with selective memory allocation error injection
CN111338761B (zh) 一种51单片机虚拟中断控制器及实现方法

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