这个二进制文件的格式是什么?

逆向工程 二元分析 固件 记忆 图片
2021-06-13 06:08:54

我在 3D 打印机上找到了一个二进制文件,用于对 dsPIC30F5011 微控制器进行编程。它负责一些基本的数据加密。唯一的问题是,我不确定这个文件是如何格式化的。

它是原始二进制文件,不像英特尔 HEX 文件或任何东西。以下是一些示例行:


0C4230050037600010E0801802003B21

0C424001F02C1A00370004BE6011B819

0C42506B09200982CF0200390882CFE0

0C42600441B06942520E003208003BDD


对于第一行:

所以第一个字节(0x0C)是数据的长度。

接下来的两个字节(0x4230)是地址(我相信它是地址的两倍,我会进一步解释)

然后是数据(在这种情况下长度为 0x0C) - 050037600010E0801802003Bh

最后两个字节是校验和 - 所有字节总和的低字节的 2 补码(长度到数据结尾)。


我认为列出的地址是所需地址的两倍的原因是英特尔十六进制格式编程手册中说:

• AAAA - 是一个四位十六进制地址,表示数据记录的起始地址。格式是高字节在前,低字节在前。地址加倍是因为这种格式只支持 8 位。将该值除以二以找到真实设备地址。

事实上,这种格式与 Intel HEX 格式非常匹配,尽管它不是 ASCII 格式,也不使用有效的记录类型。

另外,最后几个命令在文件参考地址0x0008 - 0x01FF。除以 2 得到 0x0004 - 0x00FF,根据数据表,它是中断向量位置。

我已经研究这个问题多年了,我似乎无法理解这实际上是如何转换为 MCU 的。一方面,尽管该行中只有 12 个字节的数据,但地址都以 16 字节的增量递增。

如果有人能从中得到任何道理,我觉得我在这个问题上不知所措。

这是完整的文件 (42 KB)

如果您不想下载文件,这里还有一些十六进制:

0C4210889FBE8A9FBE0105780100E077
0C422004003508003C0000E0200032E3
0C4230050037600010E0801802003B21
0C424001F02C1A00370004BE6011B819
0C42506B09200982CF0200390882CFE0
0C42600441B06942520E003208003BDD
0C42708281716101648904D10884D34B
0C42808B05E80442E8F9FF3A0500371E
0C429008044489844C8B05E90442E9D1
0C42A0FBFF3A1B01070AF0A701F0A089
0C42B04F05BE4F04BE000006889FBEF4
0C42C08A9FBE8C1F783801073F013335
0C42D003866C6450E12E00326420E193
0C42E03300326150E12F00326120E118
0C42F0310032858555EB07B009002035
0C430008042005003708044489844CA0
0C43100A003106034387834B00015371
0C432081815BF8FF330203BE0800A09F
0C433008044489844CF6FF39C639DDCE
0C43408301730100321300208904D1B6
0C43500884D30998A30500320800A7D8
0C43600300A08904D10884D38B05E879
0C43708904D10884D30001EB0281D243
0C4380E4000701F0A10CF0A701F0A080
0C43901701376420E11901320801BE5A
0C43A00200BEF7FF376120E11401327B
0C43B06000B8F3FF3700002001F82780
0C43C0F0FF3704002010013703F0A2CA
0C43D0889FBE8A9FBE8C1F78F30007F8
0C43E0FA00336450E14F00326420E129
0C43F052003203826C07003B0905D02C
0C44000306D0820F540C065D02003948
0C44100200328901780306788582558D
0C442004003D0003FD8103FD8502EA5D
0C44308B8542840F7202003B6000107C
0C4440E080186011B80005EB7A28E15C
0C44500A0039060078C75DDDF707B2EE
0C44608780752D00378281710A017879
0C44706105608180D10080D38502E9E5
0C4480F9FF3B06044087844802003B23
0C4490600414E0841C0988A3070032BB
0C44A08A81718281716101648904D1FC
0C44B00884D38B05E81700370978A3B7
0个回答
没有发现任何回复~