嵌入式设备代码调试、仿真及厂商定制代码安全分析
1. 代码调试与仿真
1.1 代码调试
在嵌入式设备上进行代码调试既不方便,很多时候甚至无法实现。市面上的商用嵌入式设备,其主板很少具备调试功能。与开发板相比,已发布的设备没有用于监控 CPU 和内存运行状态的调试外设,同时也不会提供包含技术文档和调试软件的完整调试解决方案。所以,通常无法像开发者那样直接对设备进行调试。
为了完成调试任务,分析人员会采用替代方法:
- 使用 GDB stub 调试时,设备需在启动前执行一段存根代码,以建立远程调试通道,之后存根会下载并执行原始固件。
- 若设备系统为嵌入式 Linux 系统,分析人员可将调试服务器附加到特定的运行进程上进行调试。
但实现这些功能不可避免地需要人工干预。由于厂商不太可能为普通用户提供调试权限,分析人员要么在启动过程中插入存根,要么获取设备的根权限,而这两者都不容易实现。
1.2 代码仿真
仿真是实现动态代码分析和检查运行时信息的一种有前景的替代方法。先进的仿真器支持嵌入式设备采用的大多数架构(如 MIPS、ARM),仿真开销也在可接受范围内(根据相关资料,比原生代码执行慢四倍)。然而,仿真的一个主要限制是,通常需要进行完整的系统仿真才能正确执行代码。
对于嵌入式系统镜像,其仿真不像桌面系统那么容易。桌面操作系统启动仅需少数 I/O 设备(如硬盘、屏幕等),这些 I/O 设备的仿真协议清晰。而嵌入式设备,由于分析人员难以了解设备的外设细节和板级支持包,因此通常无法进行完整或近似的系统级仿真。
此前有人尝试通过进程级仿真或将 ELF 可执行文件在另
超级会员免费看
订阅专栏 解锁全文
1200

被折叠的 条评论
为什么被折叠?



