赞助论坛
  • 6436阅读
  • 0回复

手工去掉小海尔BIN中校验的方法(仅适用于刷机狂人) [复制链接]

楼层直达
byzx  

发帖
445
精华
12
金币
658
威望
178
贡献
331
好评
134
注册
2010-03-02
楼主    byzx 发表于: 2010-04-04 08:19:23 
昨天晚上发现了程序中检查校验码的程序片段,分析后认为,可以通过简单的方法让BIN中的校验失效。(实际上是伪校验,就是不管内容改成什么,校验码都对)

以后的修改工具可以增加这么一个功能“去掉程序中的CRC校验”,并通过校验表数据判断一个BIN是有校验的还是无校验的。

这么做的好处是,如果你频繁修改BIN进行测试,在对文件进行16进制编辑后,可直接用于刷机实验,而不需要用风寒或者FACE或者其它工具进行CRC修正,能小幅的提高工作效率。

方法如下:

找到BIN中的CRCTABLE,小海尔0202的值是14BB1H-14FD0H,小海尔0224版的值是14BDF-14FFE其中前32个字节是CRC16-ITU的CRC常数表,后1K字节是CRC32BitMpeg2的校验常数表,将这1056个字节全清成0。(其中有至少6个本来就是0)

如果你的BIN中CRC表的位置和这个不符,可以按十六进制搜索“00 00 10 21 20 42 30 63 40 84”,表的最后4个字节是“B1 F7 40 B4”。

然后找到BIN中的各校验码,也将其一一清0,比较著名的有1FFF8H,20059H,200FCH等处,可以用风寒或者FACE工具查看具体位置。参见附图。

本方法已经通过实验证实。
本帖最近评分记录: 5 条评分