增强处理器抗故障注入鲁棒性的技术解析
1. 软件元数据
元数据包含描述程序控制流图(CFG)的信息,这些信息被组织成一个个元数据块,每个元数据块描绘一个基本块(BB)的执行行为。对于32位架构,图3展示了这些元数据块中存储的信息以及它们在内存中的格式。
每个基本块的元数据包含以下内容:
- 该基本块结束时可访问的有效目标地址列表。
- 根据基本块的指令计算得到的签名。
- 基本块中存在的指令数量以及本部分描述的其他信息。
每个元数据块包含多个条目,每个条目类型由最高两位(MSB)标识,有以下四种类型:
- StartBB :作为头信息,描述当前基本块的类型和内容。Func位用于标记函数的入口基本块。NInstr字段存储基本块的指令数量。两个Int标志位用于标记中断例程的开始或结束。EndType标志用两位编码,表示基本块结束时的控制转移类型,有None、Call、Return三种类型。VD标志指示元数据中是否存在ValidDest条目。
- ValidDest :用于存储基本块结束时允许到达/执行的一个有效目标地址,对应于CFG中的一个允许边。Addr存储目标的绝对地址,右移两位。
- Empty :当没有ValidDest要存储或所有ValidDest已在先前条目中存储时使用,也用于使元数据的大小与基本块的指令数量匹配,以保持内存对齐一致。
- EndBB :标记基本块的结束,还包含对基本块所有指令计算得到的哈希签名。EndBB头和NInstr用于确定基本块的
超级会员免费看
订阅专栏 解锁全文
42

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



