[发明专利]嵌入式系统固件程序的动态调试方法有效
申请号: | 202010575716.X | 申请日: | 2020-06-22 |
公开(公告)号: | CN111752829B | 公开(公告)日: | 2022-10-14 |
发明(设计)人: | 胡平;顾雪峰;刘杰峰;刘凯;张林森;杨迎化;王伟 | 申请(专利权)人: | 中国人民解放军海军工程大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F9/455 |
代理公司: | 北京孚睿湾知识产权代理事务所(普通合伙) 11474 | 代理人: | 刘翠芹 |
地址: | 430033 *** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 嵌入式 系统 程序 动态 调试 方法 | ||
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格式程序数据段方法为:
直接在文件头中修改数据段地址和大小。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军海军工程大学,未经中国人民解放军海军工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010575716.X/1.html,转载请声明来源钻瓜专利网。