数码部落 [PDAclan.com]'s Archiver

weisun 发表于 2008-7-6 18:59

ROM的分解以及合成、BIN打包、PP修改超强rom工具osnbtool详解

[color=#000000][font=宋体]经常看到有些朋友问如何解开某某[/font][font=Times New Roman]ROM[/font][font=宋体],如何修改某某机器的[/font][font=Times New Roman]PagePool[/font][font=宋体]等等,嫌麻烦不再一一解答了,写个教程。[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=宋体]请先下载本人拙作[/font][font=Times New Roman]osnbtool.exe[/font][font=宋体]以及压缩支持库[/font][font=Times New Roman]cecompr_nt.dll[/font][font=宋体]。关于[/font][font=Times New Roman]OS[/font][font=宋体]镜像等的说明请移步[/font][font=Times New Roman]osnbtool[/font][font=宋体]发布贴查阅,[/font][font=Times New Roman]osnbtool.exe[/font][font=宋体]的命令参数说明请参考所附[/font][font=Times New Roman]readme[/font][font=宋体],本文不再赘述。工具发布贴:[url=http://www.pdaclan.com/thread-12817-1-1.html]http://www.pdaclan.com/thread-12817-1-1.html[/url][/font][/color]

[color=DarkRed]2008.10.18新增BIN打包,更新在第5楼。[/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][b][font=宋体]一、[/font][font=Times New Roman]ROM[/font][/b][b][font=宋体]文件的构成以及用[/font][font=Times New Roman]-sp[/font][/b][b][font=宋体]命令分离出[/font][font=Times New Roman]OS[/font][/b][b][font=宋体]镜像[/font][/b][/color]
[color=#000000][font=宋体]粗略看了一下部落所发布的各机型[/font][font=Times New Roman]ROM[/font][font=宋体],大多数都包含了完整地[/font][font=Times New Roman]OS[/font][font=宋体]镜像,对于这些[/font][font=Times New Roman]rom[/font][font=宋体]文件都能够被[/font][font=Times New Roman]osnbtool.exe[/font][font=宋体]直接支持。这些[/font][font=Times New Roman]ROM[/font][font=宋体]的结构的种类如下图:[/font][/color]
[attach]29705[/attach]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=宋体]使用[/font][font=Times New Roman]osnbtool.exe –sp <rom[/font][font=宋体]文件[/font][font=Times New Roman]>[/font][font=宋体]来了解[/font][font=Times New Roman]rom[/font][font=宋体]的构成和分离出[/font][font=Times New Roman]OS[/font][font=宋体]镜像。对于种类一和种类三,[/font][font=Times New Roman]-sp[/font][font=宋体]会分离出[/font][font=Times New Roman]fName.ext.PRE[/font][font=宋体]文件(头部)和[/font][font=Times New Roman]fName.ext.OS.NB[/font][font=宋体]([/font][font=Times New Roman]OS[/font][font=宋体]镜像或[/font][font=Times New Roman]OS[/font][font=宋体]镜像[/font][font=Times New Roman]+[/font][font=宋体]尾部);对于种类二和种类四[/font][font=Times New Roman]-sp[/font][font=宋体]命令执行后会提示不用[/font][font=Times New Roman]split[/font][font=宋体]。只要[/font][font=Times New Roman]ROM[/font][font=宋体]已经是以[/font][font=Times New Roman]OS[/font][font=宋体]镜像开头,不管后面又没有“[/font][font=Times New Roman]ROM[/font][font=宋体]尾部”,[/font][font=Times New Roman]osnbtool[/font][font=宋体]都会正确处理,因此种类二和种类四是在本文中都看作是纯[/font][font=Times New Roman]OS[/font][font=宋体]镜像。[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=Times New Roman]-sp[/font][font=宋体]命令示例一:[/font][/color]
[color=#000000][font=宋体]下面是对[/font][font=Times New Roman]ASUS-P535[/font][font=宋体]的纯[/font][font=Times New Roman]OS-ROM[/font][font=宋体]执行[/font][font=Times New Roman]-sp[/font][font=宋体]后的情况:[/font][/color]
[color=blue][font=Times New Roman]D:\ tools>osnbtool -sp galaxyii.nb0[/font][/color]
[color=blue][font=Times New Roman]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/font][/color]
[color=blue][font=Times New Roman]Sector size : 0x00000200[/font][/color]
[color=blue][font=Times New Roman]OS IMAGE found.[/font][/color]
[color=blue][font=Times New Roman]Partitions infomation:                                      [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]下表列出各分区信息[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]Part-0 type: BOOT SECTION image                [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]分区[/font][/color][color=red][font=Times New Roman] 0 [/font][/color][color=red][font=宋体]:[/font][/color][font=Times New Roman][color=red]BOOT[/color][color=blue][/color][/font]
[color=blue][font=Times New Roman]Part-1 type: XIP RAM Image                          [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]分区[/font][/color][color=red][font=Times New Roman] 1 [/font][/color][color=red][font=宋体]:[/font][/color][color=red][font=Times New Roman]XIP[/font][/color]
[color=blue][font=Times New Roman]Part-2 type: IMGFS file system                       [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]分区[/font][/color][color=red][font=Times New Roman] 2 [/font][/color][color=red][font=宋体]:[/font][/color][color=red][font=Times New Roman]IMGFS[/font][/color][color=red][font=宋体]文件系统[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]Source file does not need to split!                    [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]已经是纯[/font][/color][color=red][font=Times New Roman]OS[/font][/color][color=red][font=宋体]镜像[/font][/color][color=blue][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=Times New Roman]-sp[/font][font=宋体]命令示例二:[/font][/color]
[color=#000000][font=宋体]下面是对[/font][font=Times New Roman]SORG[/font][font=宋体]的[/font][font=Times New Roman]ASUS-P750 ROM[/font][font=宋体]执行[/font][font=Times New Roman]-sp[/font][font=宋体]后的情况([/font][font=Times New Roman]750[/font][font=宋体]的官方[/font][font=Times New Roman]ROM[/font][font=宋体]结构和[/font][font=Times New Roman]535[/font][font=宋体]完全一样,但是[/font][font=Times New Roman]SORG[/font][font=宋体]自定义了[/font][font=Times New Roman]ROM[/font][font=宋体]结构):[/font][/color]
[color=blue][font=Times New Roman]D:\ tools>osnbtool -sp PegasusP.nb0[/font][/color]
[color=blue][font=Times New Roman]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/font][/color]
[color=blue][font=Times New Roman]Sector size : 0x00000200[/font][/color]
[color=blue][font=Times New Roman]OS IMAGE found.[/font][/color]
[color=blue][font=Times New Roman]Partitions infomation:                                      [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]下表列出各分区信息[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]Part-0 type: XIP RAM Image                           [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]分区[/font][/color][color=red][font=Times New Roman] 0 [/font][/color][color=red][font=宋体]:[/font][/color][font=Times New Roman][color=red]XIP[/color][color=blue][/color][/font]
[color=blue][font=Times New Roman]Part-1 type: IMGFS file system                        [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]分区[/font][/color][color=red][font=Times New Roman] 1 [/font][/color][color=red][font=宋体]:[/font][/color][color=red][font=Times New Roman]IMGFS[/font][/color][color=red][font=宋体]文件系统[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]PegasusP.nb0.PRE written.                             [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]生成了[/font][/color][color=red][font=Times New Roman].PRE[/font][/color][color=red][font=宋体]文件([/font][/color][color=red][font=Times New Roman]rom[/font][/color][color=red][font=宋体]头部)[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]PegasusP.nb0.OS.NB written.                         [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]生成了[/font][/color][color=red][font=Times New Roman].OS.NB[/font][/color][color=red][font=宋体]文件([/font][/color][color=red][font=Times New Roman]OS[/font][/color][color=red][font=宋体]镜像)[/font][/color][color=red][/color]
[color=red][font=Times New Roman][/font][/color]
[color=red][font=Times New Roman][/font][/color]
[color=#000000][font=宋体]基于上面[/font][font=Times New Roman]2[/font][font=宋体]个例子,我们看到[/font][font=Times New Roman]-sp[/font][font=宋体]命令同时完成了分离出[/font][font=Times New Roman]OS[/font][font=宋体]镜像和列出分区信息的功能。善用这个命令就可以对种类一到四的[/font][font=Times New Roman]ROM[/font][font=宋体]进行分解了。[/font][/color]

[color=#000000][/color]
[color=#000000][font=宋体]对于[/font][font=Times New Roman]-sp[/font][font=宋体]命令示例一,我们用[/font][font=Times New Roman] osnbtool.exe –d galaxyii.nb0 2 imgfs.bin[/font][font=宋体]导出[/font][font=Times New Roman]imgfs[/font][font=宋体]文件系统镜像,对于[/font][font=Times New Roman]-sp[/font][font=宋体]命令示例二,我们用[/font][/color][font=Times New Roman][color=#000000]osnbtool.exe –d [/color][color=blue]PegasusP.nb0.OS.NB[/color][color=#000000] 0 XIP.BIN[/color][/font][color=#000000][font=宋体]导出[/font][font=Times New Roman]XIP[/font][font=宋体]镜像(注意源文件是[/font][font=Times New Roman]fName.ext.OS.NB[/font][font=宋体])。至于如何导出示例一的[/font][font=Times New Roman]XIP[/font][font=宋体]和示例二的[/font][font=Times New Roman]IMGFS[/font][font=宋体],留给读者自己想。。。。[/font][/color]
[font=宋体][color=#000000][/color][/font]
[font=宋体][color=#000000][/color][/font]
[color=#000000][/color]
[b][size=4][color=red]**********************************************************[/color][/size][/b]

[color=darkorchid][b][color=royalblue]7.23 [/color]增强了的 -sp 命令支持包含扇区计数BLK的源ROM文件,对其进行自动判断并且分离出纯正的OS-IMAGE、.Extra文件,如果ROM有头部内容的话也同样生成.PRE文件,示例如下:[/b][/color]
[color=#000000][/color]
[color=#000000][font=Times New Roman]-sp[/font][font=宋体]命令示例三:[/font][/color]
[color=#000000]下面这个rom是在随便找了个SAMSUNG-i780的nb0,其中包含了头部以及os部分,文件中包含扇区计数BLK,osnbtool先把头部分离出来(头部不处理extra数据),再将OS部分分离为.os.nb(纯OS镜像)和.Extra,纯OS镜像把imgfs以及之前的分区长度全部按照标准还原,和nbsplit.exe -data 2048 -extra 8 导出的.payload文件不同,.payload没有还原长度,用osnbtool -d 以及2.1版本的imgfsfromnb.exe都不能导出正确的IMGFS.BIN,而osnbtool -sp导出的os镜像完全能够按照标准导出正确的imgfs.bin(至少用osnbtool -d 可以):
[/color][color=blue]D:\osnbtool>osnbtool -sp i780.nb0
OS ROM Partition Tool V1.34 By Weisun :> PDAclan.com
Sector size : 0x00000800[font=Times New Roman]                                        [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------自动扫描得到[/font][/color][color=red][font=宋体]扇区尺寸[/font][/color]
Extra data bytes : 0x00000008[font=Times New Roman]                               [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------插值长度(extra data)[/font][/color]
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image[font=Times New Roman]                          [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------分区-0:BOOT[/font][/color]
Part-1 type: XIP RAM Image[font=Times New Roman]                                     [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------分区-1:XIP[/font][/color]
Part-2 type: IMGFS file system[font=Times New Roman]                                  [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------分区-2:IMGFS[/font][/color]
Part-3 type: legit DOS partition[font=Times New Roman]                                 [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------分区-3:DOS-FAT[/font][/color]
**************************************
i780.nb0.PRE written.[font=Times New Roman]                                               [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------首先把头部存为.PRE文件[/font][/color]
i780.nb0.OS.NB written.[font=Times New Roman]                                           [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------得到符合标准的纯OS镜像[/font][/color]
i780.nb0.Extra written.[font=Times New Roman]                                            [/font][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------extra数据保存为.Extra文件,留作还原时用[/font][/color][/color]
[font=Times New Roman][color=#ff0000][/color][/font]
[font=Times New Roman][color=black]下图为示例3导出的纯OS镜像.os.nb和nbsplit.exe导出的.payload的对比,请注意圈中文件长度:[/color][/font]
[font=Times New Roman][color=#000000][/color][/font][attach]30658[/attach]
[font=Times New Roman][color=#000000][/color][/font]
[font=Times New Roman][color=#000000][/color][/font]
[font=Times New Roman][color=#000000]对于示例3得到的.os.nb文件(纯OS镜像)用osnbtool -d 命令导出完整的imgfs.bin过程如下:[/color][/font]
[font=Times New Roman][color=blue]D:\osnbtool>osnbtool -d i780.nb0.OS.NB 2 imgfs.bin
OS ROM Partition Tool V1.34 By Weisun :> PDAclan.com
Sector size : 0x00000800                                        [color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]扇区尺寸[/font][/color]
Extra data bytes : 0x00000000                                 [color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------因为源文件已经是纯OS镜像,extra数据为0[/font][/color]
OS IMAGE found.
Partitions infomation:
**************************************
Part-0 type: BOOT SECTION image
Part-1 type: XIP RAM Image
Part-2 type: IMGFS file system                                [color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------分区-2:IMGFS[/font][/color]
Part-3 type: legit DOS partition
**************************************[/color][/font]
[font=Times New Roman][color=blue]Can not find compression signature.                         [color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------未找到分区压缩标识(指的是srpx而不是imgfs的压缩)[/font][/color][/color][/font]
[font=Times New Roman][color=blue]Part-2 de-packing...
Successfully de-packed to imgfs.bin                         [color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------输出了imgfs.bin[/font][/color][/color][/font]
[font=Times New Roman][color=#ff0000][/color][/font]
[font=Times New Roman][color=black][b]附注:[/b][/color][/font]
[font=Times New Roman][color=black][b]这个i780.nb0的MSFLASH签名段比较特殊,所以就算IMGFS分区符合MBR,用2.1版的imgfsfromnb.exe对.os.nb也不能正确导出imgfs.bin。同时在用imgfstonb.exe把imgfs导入时也会在错误的位置写入IMGFS_BLOCK_SIZE,而用osnbtool -c导入的话可以正确处理。[/b][/color][/font]

[font=Times New Roman][color=#ff0000]
[size=10.5pt][size=5]****************************[/size][/size]
[size=5][size=10.5pt]2008.10.7[/size][size=10.5pt]更新为[/size][size=10.5pt]v1.42[/size][size=10.5pt][/size][/size]
[size=5][size=10.5pt]主要增加对[/size][size=10.5pt]HTC[/size][size=10.5pt]系列含有扇区地址标志[/size][size=10.5pt]rom[/size][size=10.5pt]的支持。[/size][/size]
[size=6][font=宋体]
[size=10.5pt][/size][/font][/size]
[size=10.5pt][color=#000000][font=宋体][size=4]由于v1.41的-extra命令对扇区地址的编排算法已经规范化,在这之上增加了一个intBlocksToFill的数字可选参数即可对HTC系列的rom进行扇区编排和extra插入。[/size][/font][/color][/size]
[size=10.5pt][color=#000000][font=宋体][size=4]相对于nbsplit、nbmerge这一对工具来说,osnbtool -sp和-extra的算法通用性更强:[/size][/font][/color][/size]
[color=#000000][font=宋体][size=4][size=10.5pt]1[/size][size=10.5pt]、不需要知道扇区大小等参数.-sp会自动扫描。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]2[/size][size=10.5pt]、不需要知道原rom是否有扇区地址块(extra),-sp会自动扫描提示,并直接导出RAW-OS-ROM。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]3[/size][size=10.5pt]、-sp导出的RAW-OS-ROM(xxx.os.nb)是完全按照内存中的位置构建的,在这基础上修改定制等不会出错。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]4[/size][size=10.5pt]、-sp导出的纯OS镜像用osnbtool -d都可以准确导出各分区。而nbsplit导出的xx.nb.payload大多IMGFS地址都偏离实际地址,用配套的imgfsfromnb也只能支持预定的几个机型,很多其他机型会出错。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]5[/size][size=10.5pt]、osnbtool -extra插回扇区地址块(extra)的算法基于对原rom的BPB扫描得到的参数,准确无误。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]6[/size][size=10.5pt]、由于插入扇区地址的算法符合标准,有的需要进一步打包为BIN的刷机包基于这个结果打包不会出错。[/size][/size][/font][/color]
[size=10.5pt][color=#000000][font=宋体][size=4][/size][/font][/color][/size]
[size=10.5pt][color=#000000][font=宋体][size=4]以下解开和合成以diamond的RUU_signed.NBH为例:[/size][/font][/color][/size]
[color=#000000][font=宋体][size=4][size=10.5pt]1[/size][size=10.5pt]、用nbhtool分解RUU_signed.NBH得到的os文件为windows.nb。[/size][/size][/font][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]2[/size][size=10.5pt]、执行osnbtool -sp windows.nb,如下:[/size][/size][/font][/color]
[color=green][size=10.5pt][size=4]D:\osnbtool>osnbtool -sp windows.nb[/size][/size][/color]
[color=green][size=10.5pt][size=4]OS ROM Partition Tool V1.42 By Weisun :> PDAclan.com[/size][/size][/color]
[size=4][color=green][size=10.5pt]Sector size : 0x00000800                [/size][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]扇区尺寸[/size][/font][/color][color=green][size=10.5pt][/size][/color][/size]
[size=4][color=green][size=10.5pt]Extra data bytes : 0x00000008        [/size][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------extra[/size][/color][color=red][font=宋体][size=10.5pt]块(扇区地址)[/size][/font][/color][color=green][size=10.5pt][/size][/color][/size]
[color=green][size=10.5pt][size=4]OS IMAGE found.[/size][/size][/color]
[size=4][color=green][size=10.5pt]Partitions infomation:                     [/size][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]以下为各分区信息[/size][/font][/color][color=red][size=10.5pt][/size][/color][/size]
[color=green][size=10.5pt][size=4]**************************************[/size][/size][/color]
[color=green][size=10.5pt][size=4]Part-0 type: BOOT SECTION image[/size][/size][/color]
[color=green][size=10.5pt][size=4]Part-1 type: XIP RAM Image[/size][/size][/color]
[color=green][size=10.5pt][size=4]Part-2 type: IMGFS file system[/size][/size][/color]
[color=green][size=10.5pt][size=4]Part-3 type: legit DOS partition[/size][/size][/color]
[color=green][size=10.5pt][size=4]**************************************[/size][/size][/color]
[size=4][color=green][size=10.5pt]It does not include .PRE section in source file.[/size][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]没有[/size][/font][/color][color=red][size=10.5pt].PRE[/size][/color][color=red][font=宋体][size=10.5pt]部分[/size][/font][/color][color=red][size=10.5pt][/size][/color][/size]
[color=green][size=10.5pt][size=4]-------------------------------------------------[/size][/size][/color]
[size=4][color=green][size=10.5pt]Sector counters (extra-data) found in source file.
[/size][/color][color=green][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=green][size=10.5pt]------[/size][/color][color=green][font=宋体][size=10.5pt]以下为各分区实际以及额定参数[/size][/font][/color][color=green][size=10.5pt][/size][/color][/size]
[color=green][size=10.5pt][size=4]Partition 0 true offset:00000002 true size:0000063E Len:0000063E[/size][/size][/color]
[color=green][size=10.5pt][size=4]Partition 1 true offset:00000640 true size:00000940 Len:000008C0[/size][/size][/color]
[color=green][size=10.5pt][size=4]Partition 2 true offset:00000F80 true size:0000EB00 Len:0000EB80[/size][/size][/color]
[color=green][size=10.5pt][size=4]Partition 3 true offset:00000000 true size:00000000 Len:0000B540[/size][/size][/color]
[size=4][color=green][size=10.5pt]windows.nb.OS.NB written.                       [/size][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]得到[/size][/font][/color][color=red][size=10.5pt]RAW-ROM[/size][/color][/size]
[color=red][size=10.5pt][size=4][/size][/size][/color]
[color=#000000][font=宋体][size=4][size=10.5pt]3[/size][size=10.5pt]、分解windows.nb.OS.NB的XIP及IMGFS分区:[/size][/size][/font][/color]
[size=4][size=10.5pt][font=宋体][color=green]D:\osnbtool>osnbtool -d windows.nb.os.nb 1 xip.bin
[/color][/font][/size][/size][size=3][color=green][size=10.5pt][font=宋体]OS ROM Partition Tool V1.42 By Weisun :> PDAclan.com[/font][/size]
[size=10.5pt][font=宋体]Sector size : 0x00000800[/font][/size]
[/color][size=10.5pt][font=宋体][color=green]Extra data bytes : 0x00000000        [/color][/font][/size][font=Wingdings][size=10.5pt]ß[/size][/font][font=宋体][size=10.5pt]------[/size][size=10.5pt]已经没有extra了[/size][/font]
[/size][size=3][color=green][size=10.5pt][font=宋体]OS IMAGE found.[/font][/size]
[size=10.5pt][font=宋体]Partitions infomation:[/font][/size]
[size=10.5pt][font=宋体]**************************************[/font][/size]
[size=10.5pt][font=宋体]Part-0 type: BOOT SECTION image[/font][/size]
[size=10.5pt][font=宋体]Part-1 type: XIP RAM Image[/font][/size]
[size=10.5pt][font=宋体]Part-2 type: IMGFS file system[/font][/size]
[size=10.5pt][font=宋体]Part-3 type: legit DOS partition[/font][/size]
[size=10.5pt][font=宋体]**************************************[/font][/size]
[size=10.5pt][font=宋体]Can not find compression signature.[/font][/size]
[size=10.5pt][font=宋体]Part-1 de-packing...[/font][/size]
[/color][/size][size=10.5pt][font=宋体][size=3][color=green]Successfully de-packed to xip.bin   [/color][/size][size=4][/size][/font][font=Wingdings][size=10.5pt]ß[/size][/font][font=宋体][size=10.5pt]---[/size][size=10.5pt]得到XIP镜像[/size][size=10.5pt][/size][/font][/size]
[size=10.5pt][font=宋体][size=4][/size][/font][/size]
[size=3][color=green][size=10.5pt][font=宋体]D:\osnbtool>osnbtool -d windows.nb.os.nb 2 imgfs.bin[/font][/size]
[size=10.5pt][font=宋体]OS ROM Partition Tool V1.42 By Weisun :> PDAclan.com[/font][/size]
[size=10.5pt][font=宋体]Sector size : 0x00000800[/font][/size]
[size=10.5pt][font=宋体]Extra data bytes : 0x00000000[/font][/size]
[size=10.5pt][font=宋体]OS IMAGE found.[/font][/size]
[size=10.5pt][font=宋体]Partitions infomation:[/font][/size]
[size=10.5pt][font=宋体]**************************************[/font][/size]
[size=10.5pt][font=宋体]Part-0 type: BOOT SECTION image[/font][/size]
[size=10.5pt][font=宋体]Part-1 type: XIP RAM Image[/font][/size]
[size=10.5pt][font=宋体]Part-2 type: IMGFS file system[/font][/size]
[size=10.5pt][font=宋体]Part-3 type: legit DOS partition[/font][/size]
[size=10.5pt][font=宋体]**************************************[/font][/size]
[size=10.5pt][font=宋体]Can not find compression signature.[/font][/size]
[size=10.5pt][font=宋体]Part-2 de-packing...[/font][/size]
[/color][/size][size=10.5pt][font=宋体][size=3][color=green]Successfully de-packed to imgfs.bin  [/color][/size][size=4][/size][/font][font=Wingdings][size=10.5pt]ß[/size][/font][font=宋体][size=10.5pt]---[/size][size=10.5pt]得到IMGFS镜像[/size][size=10.5pt][/size][/font][/size]
[size=10.5pt][color=#000000][font=宋体][size=4]接下来dump以及xip和imgfs的移植、定制等参考其他教程。[/size][/font][/color][/size]
[size=10.5pt][size=4][color=#000000][/color][/size][/size]
[size=10.5pt][size=4][color=#000000][/color][/size][/size]
[color=#000000][font=宋体][size=4][size=10.5pt]4[/size][size=10.5pt]、把编辑好的新的分区镜像导入windows.nb.OS.NB:[/size][/size][/font][/color]
[font=宋体][size=4][color=green][size=10.5pt]Osnbtool -c windows.nb.OS.NB 2 imgfs-new.bin[/size][/color][size=10.5pt][color=#000000] [/color][/size][size=10.5pt]导入imgfs分区,得到windows.nb.OS.NB.NEW.[/size][/size][/font]
[size=10.5pt][color=#000000][font=宋体][size=4]同样可导入xip到分区1,略。。[/size][/font][/color][/size]
[size=10.5pt][font=宋体][size=4][color=#000000][/color][/size][/font][/size]
[color=#000000][font=宋体][size=4][size=10.5pt]5[/size][size=10.5pt]、为新的纯OS镜像windows.nb.OS.NB.NEW插入扇区地址块:[/size][/size][/font][/color]
[size=4][color=green][font=宋体][size=10.5pt]D:\osnbtool>osnbtool -extra windows.nb.os.nb.NEW 0x06[/size][/font][/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]---0x06[/size][/color][color=red][font=宋体][size=10.5pt]是[/size][/font][/color][color=red][size=10.5pt]diamond[/size][/color][color=red][font=宋体][size=10.5pt]的参数,意思是[/size][/font][/color][color=red][size=10.5pt]6[/size][/color][color=red][font=宋体][size=10.5pt]个填充[/size][/font][/color][color=red][size=10.5pt]Blocks[/size][/color][font=宋体][size=10.5pt][/size][/font][/size]
[color=green][font=宋体][size=10.5pt][size=4]OS ROM Partition Tool V1.42 By Weisun :> PDAclan.com[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Sector size : 0x00000800[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Extra data bytes : 0x00000000[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]OS IMAGE found.[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Partitions infomation:[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]**************************************[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Part-0 type: BOOT SECTION image[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Part-1 type: XIP RAM Image[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Part-2 type: IMGFS file system[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]Part-3 type: legit DOS partition[/size][/size][/font][/color]
[color=green][font=宋体][size=10.5pt][size=4]**************************************[/size][/size][/font][/color]
[size=4][color=green][font=宋体][size=10.5pt]Extra data inerted into windows.nb.os.nb.NEW.EXA.[/size][/font][/color][color=red][font=Wingdings][size=10.5pt] ß[/size][/font][/color][color=red][size=10.5pt]---[/size][/color][color=red][font=宋体][size=10.5pt]得到了[/size][/font][/color][color=red][size=10.5pt].EXA[/size][/color][color=red][font=宋体][size=10.5pt]文件[/size][/font][/color][color=red][size=10.5pt][/size][/color][/size]
[color=#000000][size=4][font=宋体][size=10.5pt]最后得到的[/size][/font][font=宋体][size=10.5pt]windows.nb.os.nb.NEW.EXA[/size][/font][font=宋体][size=10.5pt]就是含有扇区地址块的镜像,也就是还原到了原来的windows.nb。[/size][/font][font=宋体][size=10.5pt]把[/size][/font][font=宋体][size=10.5pt]windows.nb.os.nb.NEW.EXA[/size][/font][font=宋体][size=10.5pt]改名为[/size][/font][size=10.5pt]xxx.nb[/size][font=宋体][size=10.5pt]或覆盖原[/size][/font][size=10.5pt]windows.nb[/size][font=宋体][size=10.5pt]即可[/size][/font][font=宋体][size=10.5pt]。[/size][/font][/size][/color]
[font=宋体][size=10.5pt][size=4][color=#000000][/color][/size][/size][/font]
[color=#000000][font=宋体][size=4][size=10.5pt]5[/size][size=10.5pt]、上一步得到的文件作为OS部分,用nbhtool或其他nbh工具重新打包为NBH即可。[/size][/size][/font][/color]
[size=4][color=#000000][/color][/size]
[size=4][/size][/color][/font]

[[i] 本帖最后由 weisun 于 2008-10-18 16:31 编辑 [/i]]

weisun 发表于 2008-7-6 19:00

[color=#000000][b][font=宋体]二、解开[/font][font=Times New Roman]IMGFS[/font][/b][b][font=宋体]文件系统以及合成[/font][font=Times New Roman]ROM[/font][/b][/color]
[color=#000000][b][font=Times New Roman][/font][/b][/color]
[color=#000000][font=宋体]在教程第一部分已经得到了[/font][font=Times New Roman]imgfs.bin[/font][font=宋体]镜像,很多[/font][font=Times New Roman]ROM diyer[/font][font=宋体]都能够熟练解开和打包,为了教程完整和对初学者照顾,再写一下解开和打包步骤:[/font][/color]
[color=#000000][font=Times New Roman][color=blue]Imgfstodump.exe imgfs.bin[/color]         [/font][font=宋体]得到[/font][font=Times New Roman]DUMP[/font][font=宋体]文件夹,定制过程略。。。[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=Times New Roman][color=blue]Imgfsfromdump.exe imgfs.bin imgfs-new.bin[/color]         [/font][font=宋体]把定制好的[/font][font=Times New Roman]DUMP[/font][font=宋体]文件夹打包生成[/font][font=Times New Roman]imgfs-new.bin[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=Times New Roman][color=blue]Osnbtool.exe –c galaxyii.nb0 2 imgfs-new.bin[/color]         [/font][font=宋体]把新的[/font][font=Times New Roman]IMGFS[/font][font=宋体]镜像插入源[/font][font=Times New Roman]OS[/font][font=宋体]镜像,生成的新镜像文件会在源[/font][font=Times New Roman]OS[/font][font=宋体]镜像文件名后再加上[/font][font=Times New Roman] .NEW[/font][font=宋体]后缀。([/font][font=Times New Roman]galaxyii.nb0[/font][font=宋体]是源[/font][font=Times New Roman]OS[/font][font=宋体]镜像,如果[/font][font=Times New Roman]-sp[/font][font=宋体]曾经分离出[/font][font=Times New Roman]fName.ext.OS.NB[/font][font=宋体],这里就要填这个文件名)[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=Times New Roman][color=seagreen]Copy /b/y fName.ext.PRE+fName.ext.OS.NB.NeW fName.ext         [/color][/font][font=宋体]如果[/font][font=Times New Roman]-sp[/font][font=宋体]时提示“[/font][font=Times New Roman]Source file does not need to split![/font][font=宋体]”就不需要这一步了,执行后生成原来的[/font][font=Times New Roman]ROM[/font][font=宋体]文件。[/font][/color]

[[i] 本帖最后由 weisun 于 2008-7-6 19:14 编辑 [/i]]

weisun 发表于 2008-7-6 19:00

[color=#000000][b][font=宋体]三、对[/font][font=Times New Roman]XIP.BIN[/font][/b][b][font=宋体]修改[/font][font=Times New Roman]PagePool[/font][/b][b][font=宋体]值以及合成[/font][font=Times New Roman]ROM[/font][/b][/color]
[b][font=Times New Roman][/font][/b]
[font=Times New Roman][color=blue][color=#000000]XIP[font=宋体]分区在[/font]OS[font=宋体]镜像中大多是分配在[/font]Part-1[font=宋体],也有少数分配在[/font]Part-0[font=宋体],目前还没有看到过[/font]XIP[font=宋体]在其他分区的。[/font][/color]
[color=#000000]XIP[font=宋体]分区镜像有压缩和不压缩之分,压缩的[/font]XIP[font=宋体]镜像就是所谓的“[/font]SRPX[font=宋体]”签名的分区。[/font][/color]
[color=#000000]
[/color]
[color=#000000][font=宋体]这里需要说明一下以前的[/font]xip2srpx.exe[font=宋体]在压缩新生成的[/font]XIP.BIN[font=宋体]镜像有时会发生错误,一些喜欢移植[/font]XIP[font=宋体]的玩家在[/font]ROM[font=宋体]引导失败后浪费了很多时间去查找[/font]XIPPORT[font=宋体]地址分配等问题,其实都是压缩镜像时惹的祸。[/font]Xip2srpx.exe[font=宋体]的错误发生在[/font]Compress block table[font=宋体]不能变长导致随后的[/font]data block[font=宋体]内容不完整。[/font]Osnbtool.exe[font=宋体]以及前一个版本[/font]srpxtool.exe[font=宋体]起初就是为了解决这个问题而作,同时出于方便考虑支持了压缩和导入[/font]OS[font=宋体]镜像一步完成,省却原来还要用[/font]HEX[font=宋体]修改分区镜像头部等麻烦的操作。[/font]osnbtool.exe[font=宋体]的“[/font]SRPX[font=宋体]”压缩算法采用[/font]M$[font=宋体]的标准头文件,保证了压缩是完全无误的。[/font][/color]
[color=#000000][font=宋体]另外说明一点[/font]osnbtool.exe –c[font=宋体]命令在导入各分区时,不论输入的分区镜像文件尺寸有何变化,都能够正确重组整个[/font]OS[font=宋体]镜像的结构。[/font][/color]
[color=#000000][/color]
[color=#000000]1[font=宋体]、第一步:[/font]XIP[font=宋体]分区的导出[/font][/color]
[color=#000000][/color]
[color=#000000][font=宋体]对于非压缩的[/font]XIP[font=宋体]分区导出示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -d i350.nb0 0 xip350.bin[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Sector size : 0x00000200[/color]
[color=blue]OS IMAGE found.[/color]
[color=blue]Partitions infomation:[/color]
[color=blue][/color]
[color=blue]**************************************[/color]
[color=blue]Part-0 type: XIP RAM Image                       [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]指出分区[/size][/font][/color][color=red][size=10.5pt] 0 [/size][/color][color=red][font=宋体][size=10.5pt]为[/size][/font][/color][color=red][size=10.5pt]XIP[/size][/color][color=blue][/color]
[color=blue]Part-1 type: IMGFS file system[/color]
[color=blue]**************************************[/color]
[color=blue]Can not find compression signature.            [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]未找到签名,说明为未压缩分区[/size][/font][/color][color=blue][/color]
[color=blue]Part-1 de-packing...[/color]
[color=blue]Successfully de-packed to xip.bin               [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]导出到[/size][/font][/color][color=red][size=10.5pt]xip.bin[/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=#000000][font=宋体]对于压缩的[/font]XIP[font=宋体]分区导出示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -d 535.nb0 1 xip.bin[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Sector size : 0x00000200[/color]
[color=blue]OS IMAGE found.[/color]
[color=blue]Partitions infomation:[/color]
[color=blue]**************************************[/color]
[color=blue]Part-0 type: BOOT SECTION image[/color]
[color=blue]Part-1 type: XIP RAM Image                   [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]指出分区[/size][/font][/color][color=red][size=10.5pt] 1 [/size][/color][color=red][font=宋体][size=10.5pt]为[/size][/font][/color][color=red][size=10.5pt]XIP[/size][/color][color=blue][/color]
[color=blue]Part-2 type: IMGFS file system[/color]
[color=blue]**************************************[/color]
[color=blue]Signature: SRPX                                    [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]签名[/size][/font][/color][color=blue][/color]
[color=blue]CompressVersion: 5                               [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]压缩版本[/size][/font][/color][color=blue][/color]
[color=blue]Uncompressed size: 2FF000                   [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]未压缩前的[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]Deompress processing...[/color]
[color=blue]Successfully decompressed to xip.bin     [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]成功解压到[/size][/font][/color][color=red][size=10.5pt]xip.bin[/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=#000000]2[font=宋体]、第二步:修改[/font]PagePool[font=宋体]值[/font][/color]
[color=#000000][font=宋体]自动搜索[/font]PP[font=宋体]偏移地址并修改到要求的数值示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -ap xip.bin 16[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Find "NKKD8" signature at offset: 0x000D6288    [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]“[/size][/font][/color][color=red][size=10.5pt]NKKD8[font=宋体]”[/font][font=宋体]偏移地址[/font][/size][/color][color=blue][/color]
[color=blue]Find instruction at offset: 0x000D6548                [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red]instruction[/color][color=red][font=宋体][size=10.5pt]偏移地址[/size][/font][/color][color=blue][/color]
[color=blue]Find PagePool Value at offset: 0x000D6558         [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red]PP[/color][color=red][font=宋体]值[/font][/color][color=red][font=宋体][size=10.5pt]偏移地址[/size][/font][/color][color=blue][/color]
[color=blue]Old value: 0x00500000(5MB)                             [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red] PP[/color][color=red][font=宋体]原值[/font][/color][color=blue][/color]
[color=blue]Sure to modify it to 0x01000000 (16MB)(y/n)? y [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]是否修改到新值?[/font][/color][color=red]y[/color][color=blue][/color]
[color=blue]New value: 0x01000000(16MB) written to offset 0x000D6558.[/color][color=red][font=Wingdings][size=10.5pt] ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]写入完成[/font][/color][color=blue][/color]
[color=#000000][/color]
[color=#000000][font=宋体]指定[/font]PP[font=宋体]偏移地址并修改到要求的数值示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -pp xip.bin 0x000D6558 5[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Offset: 0x000D6558                                      [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]指定的[/font][/color][color=red]PP[/color][color=red][font=宋体]值[/font][/color][color=red][font=宋体][size=10.5pt]偏移地址[/size][/font][/color][color=blue][/color]
[color=blue]Old value: 0x01000000(16MB)                       [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red] PP[/color][color=red][font=宋体]原值[/font][/color][color=blue][/color]
[color=blue]Sure to modify it to 0x00500000 (5MB)(y/n)? y[/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]是否修改到新值?[/font][/color][color=red]y[/color][color=blue][/color]
[color=blue]New value: 0x00500000(5MB) written to offset 0x000D6558.[/color][color=red][font=Wingdings][size=10.5pt] ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]写入完成[/font][/color][color=blue][/color]
[color=#000000][/color]
[color=#000000][/color]
[color=#000000][font=宋体]有些兄弟可能会问,既然可以自动搜索[/font]PP[font=宋体]地址,为什么还要有指定[/font]PP[font=宋体]地址命令呢?[/font][/color]
[color=#000000][/color]
[color=#000000][font=宋体]这里说明一下,[/font]osnbtool.exe –ap[font=宋体]命令的搜索算法模拟了人工使用[/font]HEX[font=宋体]编辑器在[/font]XIP.BIN[font=宋体]中寻找[/font]PP[font=宋体]位置的逻辑,但是计算机程序总有机械的一面,虽然目前还没有遇到这个算法找不到的[/font]PP[font=宋体]值地址,但是不排除特殊情况。如果遇到[/font]-ap[font=宋体]不能找到[/font]PP[font=宋体]地址,在不用[/font]HEX[font=宋体]编辑器的情况下可以利用[/font]-ap[font=宋体]的提示配合[/font]-pp[font=宋体]指定地址去测试哪个是[/font]PP[font=宋体]值,一般[/font]PP[font=宋体]值的位置在[/font]instruction[font=宋体]地址后面加[/font]0x10[font=宋体]左右的地方,就从此地址开始。[/font][/color]
[color=#000000][/color]
[color=#000000][font=宋体]自己用[/font]HEX[font=宋体]编辑了一个[/font]-ap[font=宋体]不能找到[/font]PP[font=宋体]地址的[/font]XIP.BIN[font=宋体],示例如下:[/font][/color]
[color=green]D:\ tools>osnbtool -ap xip.bin 16[/color]
[color=green]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=green]Find "NKKD8" signature at offset: 0x000D6288[/color]
[color=green]Find instruction at offset: 0x000D6548                            [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]找到[/font][/color][color=red]instruction[/color][color=red][font=宋体][size=10.5pt]地址为[/size][/font][/color][color=red]0x000D6548[/color][color=green][/color]
[color=green]Can not find value of PagePool.[/color][/color][/font]
[font=Times New Roman][color=blue][color=#008000][/color]
[color=green]D:\Share\p535prj\debug>osnbtool -pp xip.bin 0x000D6558 16[/color]
[color=green]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=green]Offset: 0x000D6558                                                    [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]先试试看[/font][/color][color=red]instruction[/color][color=red][font=宋体][size=10.5pt]地址[/size][/font][/color][color=red][size=10.5pt]+0x10[/size][/color][color=red][font=宋体][size=10.5pt]的地方[/size][/font][/color][color=green][/color]
[color=green]Old value: 0x00000000(0MB)                                       [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]原值为[/font][/color][color=red]0[/color][color=red][font=宋体],看来不是(怀疑PP原值为0的可以试改这里)[/font][/color][color=green][/color]
[color=green]Sure to modify it to 0x01000000 (16MB)(y/n)? n           [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]先不改,取消[/font][/color][color=green][/color]
[color=green]User cancel.[/color]
[color=#000000][/color]
[color=green]D:\ tools>osnbtool -pp xip.bin 0x000D6554 16[/color]
[color=green]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=green]Offset: 0x000D6554                                                  [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]往前挪[/font][/color][color=red]4[/color][color=red][font=宋体]个字节([/font][/color][color=red]DWORD[/color][color=red][font=宋体])看看[/font][/color][color=green][/color]
[color=green]Old value: 0x8854099C(2181MB)                               [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]更不像了。。。[/font][/color][color=green][/color]
[color=green]Sure to modify it to 0x01000000 (16MB)(y/n)? n         [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]还是取消[/font][/color][color=green][/color]
[color=green]User cancel.[/color]
[color=green][/color]
[color=green]D:\ tools>osnbtool -pp xip.bin 0x000D655C 16[/color]
[color=green]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=green]Offset: 0x000D655C                                                 [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]往后挪[/font][/color][color=red]4[/color][color=red][font=宋体]个字节([/font][/color][color=red]DWORD[/color][color=red][font=宋体])看看[/font][/color][color=green][/color]
[color=green]Old value: 0x0050BB00(5MB)                                    [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]这个比较像[/font][/color][color=green][/color]
[color=green]Sure to modify it to 0x01000000 (16MB)(y/n)? y         [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]好的,就改吧[/font][/color][color=green][/color]
[color=green]New value: 0x01000000(16MB) written to offset 0x000D655C.  [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体]改好了[/font][/color][color=red][/color]
[color=#000000][font=宋体]如上在[/font]instruction[font=宋体][size=10.5pt]地址[/size][/font][size=10.5pt]+0x10[/size][font=宋体][size=10.5pt]附近查找哪一个值比较像,就改掉它刷机测。万一[/size][/font][size=10.5pt]-ap[/size][font=宋体][size=10.5pt]改的没有效果也可以用此方法。[color=red]目前遇到asus-p526以及gsmart-i350的pp偏移量比较特殊,最新版的-ap自动搜索已经改进并支持。在此感谢本坛大大STAR3000和ACWAN的测试![/color][/size][/font][/color]
[color=#000000][/color]
[color=#000000]3[font=宋体]、第三步:[/font]XIP[font=宋体]分区的导入并生成新的[/font]OS[font=宋体]镜像[/font][/color]
[color=#000000][/color]
[color=#000000][font=宋体]对于压缩的[/font]XIP[font=宋体]分区导入示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -c i350.nb0 0 xip.bin[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Sector size : 0x00000200[/color]
[color=blue]OS IMAGE found.[/color]
[color=blue]Partitions infomation:[/color]
[color=blue]**************************************[/color]
[color=blue]Part-0 type: XIP RAM Image                         [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]指出分区[/size][/font][/color][color=red][size=10.5pt] 0 [/size][/color][color=red][font=宋体][size=10.5pt]为[/size][/font][/color][color=red][size=10.5pt]XIP[/size][/color][color=blue][/color]
[color=blue]Part-1 type: IMGFS file system[/color]
[color=blue]**************************************[/color]
[color=blue]Can not find compression signature.               [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]未找到签名,说明为未压缩分区[/size][/font][/color][color=blue][/color]
[color=blue]Part-0 inserting...[/color]
[color=blue]Successfully inserted xip.bin into i350.nb0.NEW[/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]导入了[/size][/font][/color][color=red][size=10.5pt]xip.bin[/size][/color][color=red][font=宋体][size=10.5pt],生成[/size][/font][/color][color=red]i350.nb0.NEW[/color]
[color=red][/color]
[color=red][/color]
[color=#000000][font=宋体]对于压缩的[/font]XIP[font=宋体]分区导入示例:[/font][/color]
[color=blue]D:\ tools>osnbtool -c 535.nb0 1 xip.bin[/color]
[color=blue]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/color]
[color=blue]Sector size : 0x00000200[/color]
[color=blue]OS IMAGE found.[/color]
[color=blue]Partitions infomation:[/color]
[color=blue]**************************************[/color]
[color=blue]Part-0 type: BOOT SECTION image[/color]
[color=blue]Part-1 type: XIP RAM Image                        [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]指出分区[/size][/font][/color][color=red][size=10.5pt] 1 [/size][/color][color=red][font=宋体][size=10.5pt]为[/size][/font][/color][color=red][size=10.5pt]XIP[/size][/color][color=blue][/color]
[color=blue]Part-2 type: IMGFS file system[/color]
[color=blue]**************************************[/color]
[color=blue]Source OS image:                                        [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]以下为源[/size][/font][/color][color=red][size=10.5pt]OS[/size][/color][color=red][font=宋体][size=10.5pt]镜像中的参数[/size][/font][/color][color=blue][/color]
[color=blue]Signature: SRPX                                          [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]签名[/size][/font][/color][color=blue][/color]
[color=blue]CompressVersion: 5                                     [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]压缩版本[/size][/font][/color][color=blue][/color]
[color=blue]Uncompressed size: 2FF000                         [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]未压缩前的[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]Source Part-1 Size: 1F4000                          [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]压缩分区[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]--------------------------------------                 [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]以下为新的[/size][/font][/color][color=red][size=10.5pt]OS[/size][/color][color=red][font=宋体][size=10.5pt]镜像中的参数[/size][/font][/color][color=blue][/color]
[color=blue]Compress processing...[/color]
[color=blue]NEW Uncompressed size: 2FF000                [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]未压缩前的[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]NEW Compressed size: 1B3137                    [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------XIP[/size][/color][color=red][font=宋体][size=10.5pt]镜像压缩后的[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]New Part Size: 1B377B                                [/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]导入新[/size][/font][/color][color=red][size=10.5pt]OS[/size][/color][color=red][font=宋体][size=10.5pt]镜像后的[/size][/font][/color][color=red][size=10.5pt]XIP[/size][/color][color=red][font=宋体][size=10.5pt]分区[/size][/font][/color][color=red][size=10.5pt]size[/size][/color][color=blue][/color]
[color=blue]Successfully compressed xip.bin into 535.nb0.NEW[/color][color=red][font=Wingdings][size=10.5pt]ß[/size][/font][/color][color=red][size=10.5pt]------[/size][/color][color=red][font=宋体][size=10.5pt]导入新[/size][/font][/color][color=red][size=10.5pt]OS[/size][/color][color=red][font=宋体][size=10.5pt]镜像[/size][/font][/color][color=red][size=10.5pt] 535.nb0.NEW[/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=red][size=10.5pt][/size][/color]
[color=#000000][font=宋体][size=10.5pt]上面这些步骤弄好了就可以用新做好的[/size][/font][size=10.5pt]OS[/size][font=宋体][size=10.5pt]镜像刷机了,至于[/size][/font][size=10.5pt]XIP.BIN[/size][font=宋体][size=10.5pt]的分解移植等不在本文讨论范围,请参考其他教程。[/size][/font][/color]

[/color][/font]

[[i] 本帖最后由 weisun 于 2008-7-21 12:10 编辑 [/i]]

weisun 发表于 2008-7-6 19:00

[color=#000000][b][font=宋体]四、解开一些[/font][font=Times New Roman]ROM[/font][/b][b][font=宋体]的[/font][font=Times New Roman]XOR[/font][/b][b][font=宋体]掩码[/font][/b][/color]
[b][font=宋体][color=#000000][/color][/font][/b]

[color=#000000][font=宋体]有的机型支持多种包装的[/font][font=Times New Roman]rom[/font][font=宋体]文件刷机,比如华硕[/font][font=Times New Roman]535[/font][font=宋体]、[/font][font=Times New Roman]525[/font][font=宋体]、[/font][font=Times New Roman]750[/font][font=宋体]系列,可以直接刷[/font][font=Times New Roman]OS[/font][font=宋体]镜像,又可以刷官方发布的升级包。而有些官方升级包的[/font][font=Times New Roman]ROM[/font][font=宋体]文件使用了掩码,要分解这类[/font][font=Times New Roman]ROM[/font][font=宋体]需要先解掩码,[/font][font=Times New Roman]osnbtool[/font][font=宋体]提供了[/font][font=Times New Roman]-x[/font][font=宋体]命令在解开掩码的同时显示[/font][font=Times New Roman]rom[/font][font=宋体]中分区信息供参考。[/font][/color]
[color=#000000]
[/color]
[color=#000000][font=宋体]下面是[/font][font=Times New Roman]AsusP535[/font][font=宋体]官方[/font][font=Times New Roman]WM6[/font][font=宋体]的[/font][font=Times New Roman]CAP[/font][font=宋体]文件用[/font][font=Times New Roman]-x[/font][font=宋体]解开后的情况:[/font][/color]
[color=blue][font=Times New Roman]D:\ tools>osnbtool -x asusp535.cap 0xA87BA0D5 [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]这[/font][/color][color=red][font=Times New Roman]0xA87BA0D5[/font][/color][color=red][font=宋体]就是掩码[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/font][/color]
[color=blue][font=Times New Roman]Unmasked to asusp535.cap.XOR                        [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]解掩码后得到的[/font][/color][color=red][font=Times New Roman].XOR[/font][/color][color=red][font=宋体]文件[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]Sector size : 0x00000200[/font][/color]
[color=blue][font=Times New Roman]OS IMAGE found.                                            [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]找到了[/font][/color][color=red][font=Times New Roman]OS[/font][/color][color=red][font=宋体]镜像[/font][/color][color=blue][/color]
[color=blue][font=Times New Roman]Partitions infomation:                                         [/font][/color][color=red][font=Wingdings][font=Wingdings]ß[/font][/font][/color][color=red][font=Times New Roman]------[/font][/color][color=red][font=宋体]以下为分区信息表[/font][/color][color=red][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]Part-0 type: BOOT SECTION image[/font][/color]
[color=blue][font=Times New Roman]Part-1 type: XIP RAM Image[/font][/color]
[color=blue][font=Times New Roman]Part-2 type: IMGFS file system[/font][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=#000000][font=宋体]如果[/font][font=Times New Roman]-x[/font][font=宋体]后没有分区信息表的话说明掩码错了。最好问明白再来,穷举法试不出来的。。呵呵[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=宋体]接下来可以[/font][font=Times New Roman]-sp[/font][font=宋体]了:[/font][/color]
[color=blue][font=Times New Roman]D:\ tools>osnbtool -sp asusp535.cap.XOR[/font][/color]
[color=blue][font=Times New Roman]OS ROM Partition Tool V1.30 By Weisun :> PDAclan.com[/font][/color]
[color=blue][font=Times New Roman]Sector size : 0x00000200[/font][/color]
[color=blue][font=Times New Roman]OS IMAGE found.[/font][/color]
[color=blue][font=Times New Roman]Partitions infomation:[/font][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]Part-0 type: BOOT SECTION image[/font][/color]
[color=blue][font=Times New Roman]Part-1 type: XIP RAM Image[/font][/color]
[color=blue][font=Times New Roman]Part-2 type: IMGFS file system[/font][/color]
[color=blue][font=Times New Roman]**************************************[/font][/color]
[color=blue][font=Times New Roman]asusp535.cap.XOR.PRE written.[/font][/color]
[color=blue][font=Times New Roman]asusp535.cap.XOR.OS.NB written.[/font][/color]
[color=#000000][font=宋体]不用再解释这些东东的含义了吧。。。。。。[/font][font=Times New Roman]asusp535.cap.XOR.OS.NB[/font][font=宋体]就是[/font][font=Times New Roman]535[/font][font=宋体]的[/font][font=Times New Roman]OS[/font][font=宋体]镜像,要卡刷的话必须改名为:[/font][font=Times New Roman]GalaxyII.nb0[/font][/color]
[font=Times New Roman][color=#000000]
[/color][/font]
[color=#000000][font=宋体]用过本人的[/font][font=Times New Roman]p535captool –d AsusP535.cap[/font][font=宋体]得到[/font][font=Times New Roman]GalaxyII.nb0[/font][font=宋体]的朋友可能会问,这两种方法得到的[/font][font=Times New Roman]OS[/font][font=宋体]有何区别?回答是没有区别。[/font][/color]
[color=#000000][font=Times New Roman]P535captool[/font][font=宋体]是专用于[/font][font=Times New Roman]535[/font][font=宋体]的,而[/font][font=Times New Roman]osnbtool[/font][font=宋体]是通用工具。虽然也可以用[/font][font=Times New Roman]Xda3nbftool[/font][font=宋体]的[/font][font=Times New Roman]-x[/font][font=宋体]命令,但是[/font][font=Times New Roman]osnbtool[/font][font=宋体]会列出镜像分区情况,更实用些吧。。。[/font][/color]
[font=Times New Roman][color=#000000][/color][/font]
[color=#000000][font=宋体]至于怎样看出[/font][font=Times New Roman]rom[/font][font=宋体]的掩码是多少。。。方法简单但是要说清楚颇费口水,以后再说吧。。[/font][/color]
[color=#000000]
[/color]
[color=#000000][font=宋体]列出一些官方[/font][font=Times New Roman]ROM[/font][font=宋体]的掩码[/font][font=Times New Roman](Asus[/font][font=宋体]变态吧,这么多都加掩码。。。[/font][font=Times New Roman])[/font][font=宋体]:[/font][/color]
[color=#000000][font=Times New Roman]AsusP535[/font][font=宋体]:[/font][/color][color=red][font=Times New Roman]0xA87BA0D5[/font][/color]
[color=#000000][font=Times New Roman]AsusP750[/font][font=宋体]:[/font][/color][color=red][font=Times New Roman]0xA87BA0D6[/font][/color]
[color=#000000][font=Times New Roman]AsusP526[/font][font=宋体]:[/font][/color][color=red][font=Times New Roman]0x23232323[/font][/color]
[color=#000000][font=Times New Roman]AsusP527[/font][font=宋体]:[/font][/color][color=red][font=Times New Roman]0x23232323[/font][/color]
[color=#000000][font=Times New Roman]AsusA696[/font][font=宋体]:[/font][/color][color=red][font=Times New Roman]0xB0B0B0B0[/font][/color]
[font=宋体][color=#000000]。。。。。。其他的以后看过再补充[/color][/font]

[[i] 本帖最后由 weisun 于 2008-7-6 21:31 编辑 [/i]]

weisun 发表于 2008-7-6 19:00

[color=Blue]这楼写一下BIN结构的解开和还原。[/color][size=4][color=Red][b](***本楼后半部更新v1.51直接处理BIN结构教程,请仔细阅读***)[/b][/color][/size]

这个功能较早就已经实现,起初只是为asus-p320的BIN结构还原,由于采用了规范算法,也可适应大多类似结构的机型。
osnbtool -2bin命令可以实现BIN结构的重组,处理的对象必须是osnbtool -extra来编排扇区后的.EXA文件(相当于含有扇区结构地址的nb0)。因为这一对命令是按照标准算法承前启后的。

在BIN结构里只包含OS的很简单,参考猫的i900-kitchen即可:[url=http://www.pdaclan.com/thread-19982-1-1.html]http://www.pdaclan.com/thread-19982-1-1.html[/url],320也一样。

有些rom在BIN结构里包含了PRE部分,目前只有osnbtool -2bin可以支持。这涉及到刷入FLASH-MEMORY的目的地址,出错即黑。

以下分别列出以前有朋友问的AMOI-n800和samsung-i780的分解及合成过程:

[color=Blue]需要的工具:[/color]
1、osnbtool v1.48  下载:[url=http://www.pdaclan.com/thread-12817-1-1.html]http://www.pdaclan.com/thread-12817-1-1.html[/url]
2、我改过的viewbin.exe 下载:[url=http://www.pdaclan.com/thread-14599-1-2.html]http://www.pdaclan.com/thread-14599-1-2.html[/url]
3、split.exe 下载:[attach]36175[/attach]
其他imgfs和xip等工具请自行寻找。。

[color=Blue]n800分解:[/color]
[color=Green]split n800.img 0x60000[/color] 劈开文件得到n800.img-1.bin和n800.img-2.bin
[color=Green]ren n800.img-1.bin n800.header [/color]第一个文件是header
[color=Green]ren n800.img-2.bin n800.bin [/color]第二个文件是包含OS的BIN结构
[color=Green]viewbin -d n800.bin[/color] 解开BIN得到nb0,这个还有扇区地址
[color=Green]osnbtool -sp n800.nb0 [/color]得到n800.nb0.PRE和很纯洁的OS镜像==> n800.nb0.OS.NB。
这个n800.nb0.OS.NB就是我们能够处理的OS了,osnbtool -d n800.nb0.OS.NB 2 imgfs等等操作。。(不再赘述)

n800合成:
定制好以后,假设新生成的纯OS镜像为n800.nb0.OS.NB.NEW
[color=Green]osnbtool -extra n800.nb0.OS.NB.NEW[/color] 编排扇区(注意必须用osnbtool编排扇区,不可用nbmerge!),得到[color=Black]n800.nb0.OS.NB.NEW.EXA[/color]
[color=Green]copy/b/y n800.nb0.PRE+n800.nb0.OS.NB.NEW.EXA n800.nb0.new [/color]把之前-sp出来的.PRE和编排完扇区的OS镜像合成n800.nb0.new
[color=Green]viewbin n800.bin[/color] 看到Image Start = 0x00040400,记下这个数字作为下一步的参数([color=Red]重要!这个关系到OS刷入FLASH的地址[/color])
[color=Green]osnbtool -2bin n800.nb0.new 0x00040400 [/color]打包BIN,得到n800.nb0.new.BIN
[color=Green]copy/b/y n800.header+n800.nb0.new.BIN n800.IMG.NEW[/color] 把最先前split出来的header和新的BIN合并,得到n800.IMG.NEW
完工,把n800.IMG.NEW改为可以刷的文件名即可。

[color=Blue]i780分解:[/color]
[color=Green]split i780.img 0xDF5770 [/color]劈开文件得到i780.img-1.bin和i780.img-2.bin
[color=Green]ren i780.img-1.bin i780.header[/color] 第一个文件是header
[color=Green]ren i780.img-2.bin i780.bin[/color] 第二个文件是包含OS的BIN结构
[color=Green]viewbin -d i780.bin[/color] 解开BIN得到nb0,这个还有扇区地址
[color=Green]osnbtool -sp i780.nb0 [/color]得到i780.nb0.PRE和很纯洁的OS镜像==> i780.nb0.OS.NB
这个i780.nb0.OS.NB就是我们能够处理的OS了,解DUMP等等操作。。(不再赘述)

i780合成:
定制好以后,假设新生成的纯OS镜像为i780.nb0.OS.NB.NEW
[color=Green]osnbtool -extra i780.nb0.OS.NB.NEW[/color]  编排扇区(注意必须用osnbtool编排扇区,不可用nbmerge!),得到i780.nb0.OS.NB.NEW.EXA
[color=Green]copy/b/y i780.nb0.PRE+i780.nb0.OS.NB.NEW.EXA i780.nb0.new [/color]把之前-sp出来的.PRE和编排完扇区的OS镜像合成i780.nb0.new
[color=Green]viewbin i780.bin[/color] 看到Image Start = 0x000A0A00 ,记下这个数字作为下一步的参数(重要!这个关系到OS刷入FLASH的地址)
[color=Green]osnbtool -2bin i780.nb0.new 0x000A0A00 [color=Red]0x28[/color][/color]打包BIN,得到i780.nb0.new.BIN([color=Red]i780的转换是参照rom网上随便下载的一个,如果转换出来有问题可加上红色的参数试试。[/color])
[color=Green]copy/b/y i780.header+i780.nb0.new.BIN i780.IMG.NEW[/color] 把最先前split出来的header和新的BIN合并,得到i780.IMG.NEW
把i780.IMG.NEW改为可以刷的文件名即可。


怕麻烦的可自行制作批处理kitchen。bat里注意osnbtool的输入文件不要用带路径的变量来引用,用%~nx1来引用不带路径。


[size=5][color=Red]
[/color][/size][size=5][color=#993300][color=Red]********2008/11/24[/color][/color][/size][font=宋体][size=5][color=Red]更新[/color][/size][/font][size=5][color=#993300][color=Red]v1.51[/color][/color][/size][font=宋体][size=5][color=Red]对[/color][/size][/font][size=5][color=#993300][color=Red]BIN[/color][/color][/size][font=宋体][size=5][color=Red]结构[/color][/size][/font][size=5][color=#993300][color=Red]ROM[/color][/color][/size][font=宋体][size=5][color=Red]的直接提取和合成[/color][/size][/font][size=5][color=#993300][color=Red]********[/color][/color][/size]

Osnbtool v1.51[font=宋体]增强了[/font] –sp[font=宋体]命令直接分离含有[/font]BIN[font=宋体]结构[/font]ROM[font=宋体],并且在[/font]-2bin[font=宋体]时增加[/font]-cutheader[font=宋体]开关剪掉[/font]B000FF[font=宋体]头,以方便还原。[/font]

[color=Blue]BIN[/color][font=宋体][color=Blue]结构在[/color][/font][color=Blue]ROM[/color][font=宋体][color=Blue]中位置有几种情况。[/color][/font]
一、ROM[font=宋体]包装是完整的[/font]BIN[font=宋体]结构:[/font]
[font=宋体]比如[/font]ASUS-P320[font=宋体]的[/font]FLASH.BIN[font=宋体]。[/font]
[color=green]E:\osnbtool>osnbtool-sp flash.bin[/color]
[color=green]OS ROM Partition ToolV1.51 By Weisun :> PDAclan.com[/color]
[color=green]Sector size :0x00000200[/color]
[color=green]Extra data bytes :0x00000008[/color]
[color=green]OS IMAGE found.[/color]
[color=green]Partitions infomation:[/color]
[color=green]**************************************[/color]
[color=green]Part-0 type: BOOTSECTION image[/color]
[color=green]Part-1 type: XIP RAMImage[/color]
[color=green]Part-2 type: IMGFS filesystem[/color]
[color=green]**************************************[/color]
[color=green]Found 'B000FF' headerat offset:     0x00000000   [/color][color=red]<--[/color][font=宋体]找到了[/font][color=red]B000FF[/color][font=宋体]头[/font]
[color=green]BIN_START:   0x00000000    BIN_LENGTH:    0x03FBB000[/color]
[color=green]Records:        0x000001F2    RecordsSize:     0x03F3A764[/color]
[color=green]BinFileSize:    0x03F3A773[/color]
[color=green]StartAddr:     0x00000000                                         [/color][color=red]<--[/color][font=宋体]起始地址[/font]
[color=green]flash.bin.BIN.NB0written.                                           [/color][color=red]<--[/color][font=宋体]直接转换为[/font][color=red]NB0[/color]
[color=red] [/color]
[font=宋体]这个[/font]flash.bin.BIN.NB0[font=宋体]就是之前[/font]viewbin –d[font=宋体]后得到的[/font]flash.nb0[font=宋体]。[/font]
[font=宋体]对于这种情况,还原时直接[/font]-2bin[font=宋体]就可,因为找到了[/font]B000FF[font=宋体]头,所以不要用[/font]-cutheader[font=宋体]开关切掉[/font]B000FF[font=宋体]头。[/font]
[font=宋体]还原命令:[/font]
[color=green]Osnbtool -2bin flash.bin.BIN.NB0.OS.NB.NEW.EXA 0x00000000[/color]
[font=宋体]得到新的[/font]BIN[font=宋体]后直接改名为[/font]FLASH.BIN[font=宋体]即可。[/font]

二、BIN[font=宋体]在[/font]ROM[font=宋体]包装中间位置:[/font]
[font=宋体]如[/font]OQO-G900[font=宋体]的[/font]ROM[font=宋体]:[/font]
[color=green]E:\osnbtool>osnbtool -sp G900.UPR[/color]
[color=green]OS ROM Partition ToolV1.51 By Weisun :> PDAclan.com[/color]
[color=green]Sector size :0x00000800[/color]
[color=green]Extra data bytes :0x00000008[/color]
[color=green]OS IMAGE found.[/color]
[color=green]Partitions infomation:[/color]
[color=green]**************************************[/color]
[color=green]Part-0 type: BOOTSECTION image[/color]
[color=green]Part-1 type: XIP RAMImage[/color]
[color=green]Part-2 type: IMGFS filesystem[/color]
[color=green]Part-3 type: legit DOSpartition[/color]
[color=green]**************************************[/color]
[color=green]Found BIN_FILEstructure in source file.  [/color][color=red]<--[/color][font=宋体]发现[/font][color=red]BIN[/color][font=宋体]结构,但是并未找到[/font][color=red]B000FF[/color][font=宋体]头[/font]
[color=green]Records:    0x000001E7    RecordsSize:    0x03D1E4E0[/color]
[color=green]StartAddr:   0x000E0E00        [/color][color=red]<--[/color][font=宋体]起始地址[/font]
[color=green]G900.UPR.Header written.     [/color][color=red]<--[/color][font=宋体]保存头部[/font]
[color=green]G900.UPR.BIN.NB0 written.    [/color][color=red]<--[/color][font=宋体]将中间的[/font][color=red]BIN[/color][font=宋体]结构转换为[/font][color=red]NB0[/color]
[color=green]G900.UPR.Footer written.       [/color][color=red]<--[/color][font=宋体]保存尾部[/font]
[color=red] [/color]
[font=宋体]对于这种只要把中间的还原为[/font]BIN[font=宋体]后,再[/font]copy /b Header+BIN+Footer[font=宋体]即可合成。[/font]
[font=宋体]比如:[/font]
[size=7.5pt]Osnbtool -2bin G900.UPR.BIN.NB0.OS.NB.NEW.EXA 0xE0E00 –cutheader[/size]
[size=7.5pt]Copy/b/y G900.UPR.Header+G900.UPR.BIN.NB0.OS.NB.NEW.EXA.BIN+G900.UPR.Footer G900.NEW.UPR[/size]
[font=宋体]为什么加[/font]-cutheader[font=宋体]去剪掉[/font]B000FF[font=宋体]头?是因为[/font]-sp[font=宋体]时没有。[/font]
0xE0E00[font=宋体]参数怎么来的?[/font]-sp[font=宋体]时有提示。[/font]

三、BIN[font=宋体]在[/font]ROM[font=宋体]包装尾部位置:[/font]
[font=宋体]读到这里应该已经能够类推,[/font]-sp[font=宋体]分离出的只有[/font].Header[font=宋体]和转换好的[/font].NB0[font=宋体]。[/font]
[font=宋体]还原时只要[/font]-2bin[font=宋体]转回[/font]BIN[font=宋体]后,[/font]copy /b/y xxx.Header+xxx.BIN[font=宋体]即可。[/font]


[font=宋体][color=Blue]这里再归纳下:[/color][/font]
[font=宋体]看[/font]-sp[font=宋体]的结果来制定逆向合成步骤:[/font]
一、[font=宋体]如果[/font]-sp[font=宋体]时提示“[/font][color=green]Found 'B000FF' header at offset:…..[/color][font=宋体]”或“[/font][color=green]FoundBIN_FILE structure in source file[/color][font=宋体]”即说明[/font]ROM[font=宋体]包装中[/font]OS[font=宋体]是在[/font]BIN[font=宋体]结构中。前者说明[/font]BIN[font=宋体]结构含有[/font]B000FF[font=宋体]头;后者说明[/font]BIN[font=宋体]结构只有数据段,不包含[/font]B000FF[font=宋体]头。[/font]
二、[font=宋体]看到“[/font][color=green]Found 'B000FF'header at offset:…..[/color][font=宋体]”,则[/font]-2bin[font=宋体]时不加[/font]-cutheader[font=宋体]开关;看到“[/font][color=green]FoundBIN_FILE structure in source file[/color][font=宋体]”,则[/font]-2bin[font=宋体]时在最后加上[/font]-cutheader[font=宋体]。[/font]
三、-sp[font=宋体]后看提示确认是[/font]BIN[font=宋体]结构后,再看有无[/font]xxx.Header[font=宋体]和[/font]xxx.Footer[font=宋体]文件生成,有的话在最后[/font]copy /b +[font=宋体]时都加上去,顺序是[/font]xxx.Header+xxx.BIN+xxx.Footer[font=宋体]。[/font]
四、[font=宋体]从[/font]BIN[font=宋体]结构[/font]ROM[font=宋体]分离出来的是经过转换得到的[/font]NB0[font=宋体],再[/font]-sp[font=宋体]一次则得到了[/font].NB0.OS.NB[font=宋体]。这个才是能够正确[/font]DUMP[font=宋体]的[/font]OS[font=宋体]。[/font]
五、[font=宋体]从[/font].OS.NB[font=宋体](或[/font].OS.NB.NEW[font=宋体])还原到[/font]BIN[font=宋体]必须经过以下步骤:[/font]
Osnbtool -extraxxx.OS.NB.NEW  [font=宋体]编排扇区[/font]
Osnbtool -2binxxx.OS.NB.NEW.EXA  [font=宋体]打包[/font]BIN[font=宋体]。[/font]


[font=宋体]

[color=Blue]附加说明:[/color][/font]
[font=宋体]一些[/font]ROM[font=宋体]中[/font]BIN[font=宋体]结构虽然是包含[/font]B000FF[font=宋体]头的,但是[/font]BIN[font=宋体]中的起始内容并不是[/font]OS[font=宋体]。比如[/font]AMOI-N800[font=宋体]的[/font].IMG[font=宋体]和[/font]SAMSUNG-i780[font=宋体]的[/font].IMG[font=宋体],[/font]-sp[font=宋体]在处理这些[/font]ROM[font=宋体]时直接把它当作不包含[/font]B000FF[font=宋体]头的来处理。[/font]

[font=宋体][color=Blue]最后以[/color][/font][color=Blue]AMOI-E78[/color][font=宋体][color=Blue]的[/color][/font][color=Blue]ROM[/color][font=宋体][color=Blue]作解开及合成的例子:[/color][/font]
[font=宋体][color=DarkRed]解开:[/color][/font]
osnbtool -sp e78.img
[font=宋体]---得到[/font]e78.img.Header[font=宋体]和[/font]e78.img.BIN.NB0
osnbtool -sp e78.img.bin.nb0
[font=宋体]---得到[/font]e78.img.bin.nb0.OS.NB
osnbtool -d e78.img.bin.nb0.OS.NB 2 imgfs.bin
[font=宋体]---得到[/font]imgfs[font=宋体]镜像[/font]

[font=宋体]([/font]DUMP[font=宋体]及定制等。。。略)[/font]

[font=宋体][color=DarkRed]合成:[/color][/font]
osnbtool -c e78.img.bin.nb0.OS.NB 2 imgfs-new.bin
[font=宋体]---得到[/font]e78.img.bin.nb0.OS.NB.NEW
osnbtool -extra e78.img.bin.nb0.OS.NB.NEW
[font=宋体]---得到[/font]e78.img.bin.nb0.OS.NB.NEW.EXA
osnbtool -2bin e78.img.bin.nb0.OS.NB.NEW.EXA 0x3A3A00 –CutHeader
[font=宋体]---打包[/font]BIN
copy /b/ye78.img.Header+e78.img.bin.nb0.OS.NB.NEW.EXA.BIN E78.New.IMG
[font=宋体]---合成[/font]

[font=宋体]文件名太长?看了头大?[/font]---[font=宋体]作批处理时自己[/font]ren[font=宋体]吧。。。呵呵。这里是为了说明步骤。[/font]

[[i] 本帖最后由 weisun 于 2008-11-24 23:48 编辑 [/i]]

chly_6666 发表于 2008-7-6 19:53

难道是沙发!
技术强贴,裸体顶起来!

cccyq 发表于 2008-7-6 20:06

强烈顶上去,非常感谢楼主!

GXQ 发表于 2008-7-6 20:09

WEISUN 老大出手,造就一大批高手

weisun 发表于 2008-7-6 20:27

GXQ老弟太抬爱了
。。。。实在是不敢也不配“导师“这个称呼的 。

被楼上几位说的飘飘然不知所措了。。 :loveliness: 。。呵呵

蓝带鱼 发表于 2008-7-6 20:39

大仙又制造宝物出来害人啊.嘿嘿嘿.:yct050: :yct050:
感谢WEISUN分享成果.

95588 发表于 2008-7-6 20:57

虽然不懂,但大师的大作一定要顶的

yfyao 发表于 2008-7-6 21:36

感谢,等待以后的内容

pango_he 发表于 2008-7-6 21:52

weisun开课,趴着顶!

lzc709394 发表于 2008-7-6 22:58

嗯。留个脚印吧:yct037:

逍遥公子 发表于 2008-7-6 23:15

这个帖一定要顶

求不败 发表于 2008-7-6 23:15

支持!

lchy999 发表于 2008-7-7 00:01

谢谢WEISUN的教程!

老K 发表于 2008-7-7 00:52

这样专业的帖子。不占个位置顶上去,怎么多得起部落呢。。

paulsky 发表于 2008-7-7 13:05

我对我自己的一个ROM进行操作,可以导出imgfs.bin,但是导不出XIP.BIN,不知道为什么
错误提示:ERROR-Can not load the cecompr_nt library
-----------------------------------
[size=3]我用[color=#000000]msflshtool.exe可以解出来[/color][/size]

[[i] 本帖最后由 paulsky 于 2008-7-7 13:18 编辑 [/i]]

单车上高速 发表于 2008-7-7 13:07

虽然,不是很懂,但还是先下载了。慢慢研究

weisun 发表于 2008-7-7 13:31

[quote]原帖由 [i]paulsky[/i] 于 2008-7-7 13:05 发表 [url=http://www.pdaclan.com/redirect.php?goto=findpost&pid=209860&ptid=15132][img]http://www.pdaclan.com/images/common/back.gif[/img][/url]
我对我自己的一个ROM进行操作,可以导出imgfs.bin,但是导不出XIP.BIN,不知道为什么
错误提示:ERROR-Can not load the cecompr_nt library
-----------------------------------
我用msflshtool.exe可以解出来 ... [/quote]

错误提示很清楚呀。。[color=red]cecompr_nt library[/color]
[color=black]你用msflshtool解出来的是没有解压缩的Part。osnbtool直接解开压缩输出xip.bin。[/color]
[color=#ff0000][/color]

[color=black]下载[/color][color=#333333]cecompr_nt.dll放在同一目录下。[/color]

[[i] 本帖最后由 weisun 于 2008-7-7 13:39 编辑 [/i]]

st4455 发表于 2008-7-7 21:37

感謝分享,謝謝樓主

zeuszc 发表于 2008-7-8 07:35

很实用,收藏~~~~~~~~~~~~~~~~~~~~~~~

yfyao 发表于 2008-7-8 09:59

新手求教一个问题。

请问ipl/spl是存放在boot.raw中吗?谢谢。

weisun 发表于 2008-7-8 11:22

回复 24# yfyao 的帖子

你的boot.raw是从机器上导出的?
单从文件名看不出什么东东的。。

yfyao 发表于 2008-7-9 14:32

[quote]原帖由 [i]weisun[/i] 于 2008-7-8 11:22 发表 [url=http://www.pdaclan.com/redirect.php?goto=findpost&pid=210383&ptid=15132][img]http://www.pdaclan.com/images/common/back.gif[/img][/url]
你的boot.raw是从机器上导出的?
单从文件名看不出什么东东的。。 [/quote]

我的rom是按照  ([url=http://www.pdaclan.com/thread-8974-1-1.html]http://www.pdaclan.com/thread-8974-1-1.html[/url])的介绍,运行: pdocread.exe 0x00000000 0xFFFFFFFF MSFLSH50.nb0 > NUL  提取到的MSFLSH50.nb0 文件,讲该文件放在sd卡上,想测试一下能否直接刷机。

MSFLSH50.nb0 文件可以用你的osnbtool分解出 boot.raw,xip.raw和imgfs.raw三个文件,由于是山寨机,我想知道通常说的IPL/SPL(刷坏了会变转头)是否存在MSFSH50.nb0中?

昨天大着胆子按快捷键进入sd卡升级模式,提示  update file garbled, update file error

请问,是提取出的rom不完整?还是其它原因?谢谢。

weisun 发表于 2008-7-9 15:30

用osnbtool分解的都是OS镜像的各个分区,不涉及bootloader,所以不会变砖。

用osnbtool -sp分解出的.os.nb就是OS镜像,试着刷这个看看。

造成不能刷机的原因可能有:
1、文件名称不对
2、机器不支持直接刷OS
3、OS后面还有附加的内容,比如FATFS等等,这些如果包含在OS镜像之外,可能不能和OS一起刷
4、校验码不对(有的机器需要crc)

jamesh 发表于 2008-7-10 21:29

真是好心的高手啊~~~

edonglee 发表于 2008-7-10 23:40

WEISUN 老大出手,一定要支持!

laoniu 发表于 2008-7-11 03:33

如此强帖,必须顶。 :yct036:

pcr 发表于 2008-7-11 08:10

好东西呀!!!!!!!!!!

Oldcat 发表于 2008-7-12 00:07

出差归来~~~

好多天没有细看帖子了,weisun大大的精华教程,大力的顶起来!

hao17119 发表于 2008-7-12 10:01

菜鸟,不是很懂,但先支持一下先

greatartzh 发表于 2008-7-12 10:01

好贴,下了好好学习.

刀光 发表于 2008-7-13 18:00

这个一定要支持

carofe 发表于 2008-7-13 21:33

强帖,一定顶的。

lubaby 发表于 2008-7-13 23:35

虽然不是太懂,但令我很佩服。

tschau 发表于 2008-7-14 21:42

很好很强大,要顶要学习

pyc700 发表于 2008-7-16 08:37

顶上去

xuaner777 发表于 2008-7-17 19:13

看来还是书读少了~看的晕忽忽的:yct013: 支持起

页: [1] 2 3 4 5 6

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.