Intel Hex 文件中的未知记录类型

逆向工程 反编译
2021-07-10 23:27:18

我正在使用 USB 指轮引导加载程序并成功读取了大量记录,但在大约 2000 字节时引发了 check_sum 错误。我最初认为它必须是我的代码,但最终确定了 Hex 文件中的违规记录,我更加困惑。

以下是导致问题的 hex 文件中的代码行的一些摘录(如下)。它们都将数据长度字段显示为零。现在,据我所知,INTEL HEX 格式中数据长度为零的唯一文件类型应该是文件记录的结尾,最后一个格式为::00000001FF // End oF File记录。冒号“:”后面的两个零表示数据字段中的字节数 - 零 - 因为 EOF 记录中没有。

但是,从我的代码中提取的是以下 3 个带有“:00”的代码示例,它们不是文件记录的结尾,并且在搜索互联网时,我找不到它们可能是什么的迹象。

是的,代码编译并且我加载的十六进制代码在板上运行良好。

:1094F00044E3400B000000703EE5400B00000070AC
:009500006B  <<<< not EOF record so what is it?
:102F1C0081BF1E3C00F2C283C418027C81BF1E3CE0
.

:105B5400FFFF0234748822A40800E00300000070F0
:005B640041  <<<<not EOF record so what is it?
:104E5C00F4FFBD270000BFAF0400B9AF8594400F2D
.
:104F5C000400B98F0000BF8F0800E0030C00BD27D0
:004F6C0045  <<<<<<<not EOF record so what is it?
:020000041D01DC
.
:020000041FC01B
:102FF000000007C07505000003E606000FF00F1182
:00000001FF  // End of File Record

提前致谢

1个回答

据我所知,没有任何违反英特尔十六进制格式的内容

文件记录结束

:000000_01_FF

记录类型为“01”(第四个字节),表示文件结束,而

:009500_00_6B

是从地址 0x0095 开始的包含 0 个字节的数据记录(第四个字节 = 00)。我怀疑您的 ihex 生成器将此用作后续行中地址更改的一种指示器。