![b4a2abcb1fd602b0001d3946f118dee3.png](https://img-blog.csdnimg.cn/img_convert/b4a2abcb1fd602b0001d3946f118dee3.png)
本文为看雪论坛优秀文章 看雪论坛作者ID: StrokMitream 当你手上有一个固件?或许是从芯片上提取出来的亦或是从网上下载的更新文件。接下来你会怎么做呢? 获取到固件,然后提取出其中的有效信息,这可不是一个简单轻而易举的过程。有时,你不得不面对一些专有的文件格式(几乎没有任何参考文档),奇怪的原始数据 quirks,甚至是加密的数据。
![e93e68b9a49ffe88810de6fce8e11186.png](https://img-blog.csdnimg.cn/img_convert/e93e68b9a49ffe88810de6fce8e11186.png)
接下来,就让我们来了解了解从固件中获取有效信息的一些策略。 1、结合使用场景 充分了解当前正在处理的文件的使用场景(环境),对后续的分析是很有帮助的。你需要搞清楚支持该固件运行的芯片型号,芯片架构,大端模式还是小端模式,固件上运行的系统是 RTOS 还是 Linux ?或者是纯裸机?等等问题。 Context will help 。。。 2、Binary还是ASCII So, 文件里面到底是 ASCII 字符串还是二进制数据呢?用 head,cat,hexdump这些命令亦或是你最喜欢的 GUI 文本编辑器去查看这些文件的类型。 如果你的目标设备是运行在裸机上的,那么你可能会看到这些固件文件分散分布在众多的十六进制文本中(也经常前缀有区分码或者偏移地址/绝对地址,同时有可能在每一行后缀有校验和)。在你对这些文件进行进一步分析前,首先需要将他们整理成二进制文件格式。接下来,我们来学习了解一些常见的二进制文件格式。
>>>>
2.1 Motorola S-Record
通常,该文件格式也称为 SREC。所有 S-record 文件,每行都是大写字母S开头。关于该二进制格式的详细信息,参考[链接]。
>>>>
2.2 Intel HEX
类似 SREC , [ Intel HEX ] 每行都是以一个冒号(:)开头。
>>>>
2.3 TI-TXT
TI-TXT 是德州仪器(Texas Instruments)公司开发的格式,常用于 MSP430 系列单片机。该格式以符号@作为地址前缀,而数据是以十六进制存储的,整个文件的看起来如下:
![d803b44f16c3086dd21baa2ad50b31eb.png](https://img-blog.csdnimg.cn/img_convert/d803b44f16c3086dd21baa2ad50b31eb.png)
所有 Motorola S-record,Intel HEX 和 TI-TXT 文件都可以用[ bincopy python library ]转换成二进制文件。
>>>>