运行时CRC校验

时间:2009-03-27 06:21:22

标签: code-signing crc

Q值。 我在机器上运行了十六进制代码。如何在运行时计算整个代码的校验和?

1 个答案:

答案 0 :(得分:5)

您需要具有对整个代码段的读取权限。这可能涉及从链接器获取引用代码的第一个和最后一个地址的符号。您可以将这些地址转换为适当大小的数据指针,并在代码段上运行您想要的任何常见CRC或校验和算法。

要验证CRC,您需要知道其权威值。这可以在链接之后通过计算CRC并将其修补到初始化器中以获得合适的变量来完成。

在嵌入式系统中,我在更换现场升级中的固件之前使用了类似的技术作为完整性检查,我通常会将固件图像的存储器映射安排为只读数据结构。编写实用程序来计算图像的CRC并修复结构很容易。然后,嵌入式系统的引导加载程序可以在引导期间验证CRC以确定是否存在有效固件,如果不存在则返回到更新实用程序。当然,更新实用程序使用相同的CRC在闪烁之前验证新图像。

编辑:有关CRC的一些参考资料,以防有用: