首页 > 学习收获 > 嵌入式相关 > M30固件解包原理
2008
06-07

M30固件解包原理

囧 又发原理贴。我很恶俗啊。嗯嗯

这个原理很简单。UE打开固件,转到偏移0x728D0,就可以看见固件的索引区,即INDEX区了。里面有很多明文显示的路径名和文件名。没错。这些就是固件内包括的全部文件及其路径了。

那么解释一下,文件名很好理解。就是文件名。文件名之前的4字节,是该文件的大小,高字节在下。在这之前的4个字节,是该文件的相对偏移量,也是高字节在下。该偏移量的基准量是INDEX区的起始位置,即0x728D0。

举例来说,0x72990这个地方,是固件内第一个文件的名字,叫做APPDATA\PYTABLE.bin。在其前面的4个字节是4A A3 00 00,也就是说,这个文件的大小是0x0000A34A。再前面的4个字节是00 28 00 00,也就是说,这个文件的相对偏移量是0x00002800,也就是说,这个文件在固件内的绝对偏移量是0x00002800+0x728D0。

除了这8个字节和文件名以外,其他数据对解包无用。于是无视掉了。

就像同志们看见的,INDEX区也记录了目录。比如一上来就是APPDATA。其实也是一样的,前面的4字节是表示大小,目录的大小固定都是0。再前面的4字节记录的是偏移量,该值和该文件夹下第一个有效文件(不包括子文件夹内文件)的偏移量相同。对于APPDATA,其文件夹下第一个有效文件的偏移就是上面说的PYTABLE.BIN的偏移,因此其这4个字节也是00 28 00 00。
那么解包时,读取这些数据,记录文件夹、文件名、文件大小和文件偏移。建立相应的文件夹,从相应偏移量读取相应大小的数据,并将这些数据保存在相应的文件夹内,命名为相应名字,就完成了解包了。

解包出来的固件,其实没啥用。。。呃。。。本意是解包后美化固件可能更为简单,但是现在发现,要组包貌似很困难。。。期待高手帮助。。。

以上。再度原理完毕……

最后编辑:
作者:龙天
这个作者貌似有点懒,什么都没有留下。

M30固件解包原理》有 2 条评论

  1. 龙天说道:

    囧 者,表情也。非字。本质和:)之类没啥区别~嗯~

  2. Heyi说道:

    ”囧“,这个火星词,建议去掉,无任何意义。

留下一个回复

你的email不会被公开。