System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于动态修补的单体固件调试方法技术_技高网
当前位置: 首页 > 专利查询>四川大学专利>正文

一种基于动态修补的单体固件调试方法技术

技术编号:44466962 阅读:0 留言:0更新日期:2025-03-04 17:39
本发明专利技术公开了一种基于动态修补的单体固件调试方法,本方法通过将目标内存地址处的原始指令替换为存根stub,在固件运行至目标内存地址时插入自定义回调函数,进而实现了对特定内存地址访问事件的调试或自定义处理,解决了传统的固件调试方式下,需要硬件接口支持、难以反映固件真实执行情况的缺点;同时,对目标内存地址的修补操作在程序的动态运行阶段完成,而非对目标内存地址直接进行静态修补,显著降低了设备损坏的风险,大幅提升了作业效率,降低了投入成本。

【技术实现步骤摘要】

本实专利技术涉及单体固件漏洞挖掘与利用领域,具体涉及到一种基于动态修补的单体固件调试方法


技术介绍

1、单体固件是一种不依赖于操作系统的集成固件设计,其中所有功能和模块都被紧密地集成在同一个固件映像中。这种设计方式常常用于资源受限的嵌入式系统,能够简化管理、减少开销并提高性能。单体固件常见于stm32和arm嵌入式系统,广泛应用于简单的控制器和设备中,特别是空管领域中的大量设备均采用单体固件设计。

2、在单体固件漏洞挖掘与利用领域,很多应用场景都需要对单体固件的执行过程进行监控和调试。传统方案需要jatg接口、swd接口等硬件调试接口的支持,然而厂商出厂的设备成品一般会屏蔽这些硬件调试接口。另一种传统方案是对固件进行仿真模拟,然而仿真模拟的环境配置复杂,并且很难反应固件设备的真实执行情况。

3、传统静态修补方案是直接对监控地址进行静态方式修补,该方案容易造成固件设备损坏。若需要调试的位置过多,则损坏的概率更大。

4、因此,开发一种无需硬件支持、能够在固件执行层面提供动态修补和调试功能的技术解决方案,对于提高固件安全性、加快安全研究的进程具有重要意义。

5、为此,提出一种基于动态修补的单体固件调试方法,以解决上述问题。


技术实现思路

1、本专利技术的目的在于提供一种基于动态修补的单体固件调试方法,采用的技术方案为:

2、一种基于动态修补的单体固件调试方法,包括以下步骤:

3、s1、寻找前端上传逻辑对应的固件代码位置;

4、s2、分析固件校验算法;

5、s3、编译调试载荷,并将编译后的可执行文件转换成无格式二进制调试载荷;

6、s4、根据所述步骤s2得到的固件校验算法,重新计算无格式二进制调试载荷的校验值;

7、s5、将无格式二进制调试载荷嵌入至所述步骤s1获取到的前端上传逻辑对应的固件代码位置;

8、s6、运行固件设备,对固件设备的目标内存地址进行动态修补,并调试固件设备;具体包括以下步骤:

9、s61、确定预输入的目标内存地址和回调函数地址;

10、s62、在调试载荷预留的slot/stub空间中寻找一个空项,在该空项中开辟变量槽slot和存根stub;存根stub存储固定代码数据;

11、s63、将回调函数地址和目标内存地址写入变量槽slot中的对应地址;

12、s64、读取目标内存地址处的原始指令,并将原始指令写入变量槽slot中的对应地址;

13、s65、根据目标内存地址的下一地址,生成跳转指令,并将跳转指令写入变量槽slot中的对应地址;

14、s66、当固件程序运行至目标内存地址时,根据slot/stub空间中的存根stub地址,生成新的跳转指令newbytes,并将新的跳转指令newbytes写入目标内存地址;

15、s67、刷新指令缓存;

16、s68、执行新的跳转指令newbytes,程序跳转至slot/stub空间中的存根stub;

17、存根stub执行流程包括以下步骤:

18、s681、保存固件指令序列当前执行环境下的上下文信息;

19、s682、读取变量槽slot中保存的回调函数地址,通过回调函数地址调用回调函数,执行回调函数中用户自定义的功能代码,调试固件设备;

20、s683、恢复固件指令序列原始执行环境下的上下文信息;

21、s684、读取变量槽slot中保存的原始指令,执行原始指令;

22、s685、读取变量槽slot中的跳转指令,执行跳转指令,程序跳转至目标内存地址的下一地址;

23、s69、按照原始执行流执行固件程序。

24、本专利技术与现有技术相比,具有如下优点和有益效果:

25、1、本专利技术通过将目标内存地址处的原始指令替换为存根,在固件运行至目标内存地址时插入用户自定义的回调函数,进而实现了对特定内存地址访问事件的调试或自定义处理,解决了传统的固件调试方式下,需要硬件接口支持、难以反映固件真实执行情况的缺点。

26、2、本专利技术对目标内存地址的修补操作在程序的动态运行阶段完成,而非对目标内存地址直接进行静态修补,显著降低了设备损坏的风险,大幅提升了作业效率,降低了投入成本。

本文档来自技高网...

【技术保护点】

1.一种基于动态修补的单体固件调试方法,其特征在于,包括以下步骤:

【技术特征摘要】

1.一种基于动态修补的单体固件调试...

【专利技术属性】
技术研发人员:方智阳陈愉鑫王俊峰白小波陈浩廷耿嘉炫
申请(专利权)人:四川大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1