MCPLive > 杂志文章 > Windows Mobile系统ROM定制指南(二)

Windows Mobile系统ROM定制指南(二)

2010-11-183Gfly工作室 Tonney Eszc《微型计算机》2010年11月上

ROM合成工具

ROM合成工具现在比较通用的有2种:imgfstools和Platformrebuilder。imgfstools出现较早,包含ROM分解、合成打包等功能,每项功能均有单独的命令实现,使用较为复杂,且无法对模块地址排序进行处理。Platformrebuilder则简单易用,加上诸多国内外高手为之开发的可视操作界面,使其应用更为广泛,大有取代imgfstools之势。

imgfstools原理及介绍

imgfstools主要用来把OS.nb分解成多个小文件,能够解包、封包os.nb文件。大家使用的多的就是解开ROM的imgfs部分,即平时所说的DUMP,利用它可以将ROM的imgfs解开并保存在DUMP文件夹中。用户可以对DUMP目录做合理修改,然后按照解包步骤逆向操作,生成新的OS.Nb。下面我们将分解和封包的步骤梳理一遍。

分解过程链条:RUU-signed.nbh→(NBH_Extract)→OS.nb→(NBSplit)→OS.nb.payload→(ImgfsFromNb)→imgfs.bin→(ImgfsToDump)→DUMP目录

封包过程链条:DUMP目录→(ImgfsFromDump)→imgfs-new.bin→(ImgfsToNb)→OSnew.nb.payload→(NBMerge)→OS-new.nb→(NBHGen)→RUU-signed-new.nbh

●NBInfo

利用NBInfo可以看到OS.nb文件的结构,并能从指定的OS.nb文件输出信息。特别是分区表和MSFLSH区块,以及搜索各部分关键标记。

用法:NBinfo <foo.nb.payload>

●NBSplit

很多厂家的ROM都包含了很多额外的数据,为了防止刷机过程中数据的丢失、错误,而采取在发布的ROM中进行效验插值处理。

用法1:NBSplit -hermes|-kaiser|-titan|-wizard|-athena|-sp|-data <number> -extra <number> <filename.nb>

用法2:NBSplit -data <payload-chunksize> -extra <extra-chunk-size> <OS.nb>

●ImgfsFromNb

前身为prepare_imgfs,主要功能就是从OS.nb.payload中提取imgfs部分,并写入到一个叫imgfs.bin文件中。

用法:ImgfsFromNb <OS.nb.payload><imgfs.bin>

●ImgfsToDump

Imgfs好比是操作系统的镜像快照,而一个操作系统里面有很多文件,ImgfsToDump的作用就是把文件从imgfs文件释放到DUMP目录。需要说明的是,RecMod是一个把模块还原成单文件的一个工具,如果它和ImgfsToDump在同一个目录,那么生成的DUMP目录里面的所有模块文件,都会在模块目录里面重建一个单文件(DLL或者EXE)。

用法:ImgfsToDump <imgfs.bin>

●ImgfsFromDump

以原始的imgfs.bin为模板,从DUMP目录,生成新的imgfs-new.bin文件,它的前身是BuildImgfs,BuildImgfs和ImgfsFromDump大的区别是BuildImgfs只能生成和原始imgfs.bin文件大小一模一样的imgfs-new.bin,而ImgfsFromDump则可以根据DUMP目录文件内容,自动调整IMGFS文件大小,有效节约了空间,避免浪费,毕竟PPC的内存是宝贵的。

用法:ImgfsFromDump <imgfs.bin><imgfs-new.bin>

●ImgfsToNb

这个工具把imgfs-new.bin结合OS.nb.payload为模板,写入到一个新的os-new.nb.payload文件中。如果用了“-conservative”参数,那么在NBMerge的时候,也要使用“-conservative”参数。

用法1:ImgfsToNb <imgfs-new.bin> <OS.nb.payload> <os-new.nb.payload>

用法2:ImgfsToNb <imgfs-new.bin> <OS.nb.payload> <os-new.nb.payload> -conservative

●NBMerge

实际上就是NBSplit的逆向操作,重新对os-new.nb.payload进行插值处理,生成os-new.nb。

用法1:NBMerge -hermes|-kaiser|-titan|-sp|-wizard|-athena <os-new.nb>

用法2:NBMerge -hermes|-kaiser|-titan|-sp|-wizard|-athena <os-new.nb>
-conservative

用法3:NBMerge -data <payloadchunk-size> -extra <extra-chunk-size> <osnew.nb>

用法4:NBMerge -data <payloadchunk-size> -extra <extra-chunk-size> <osnew.nb> -conservative

Platformrebuilder原理及介绍

Platformrebuilder(PRB)是2009年推出的一款制作ROM的工具,其特点是快捷简便,省去了移植XIP、重拍地址的种种麻烦,并在一定程度上对生成的ROM做了加密(仅保留1个DSM)。PRB在工作过程中,会将XIP和ROM中的所有模块文件放在一起打包,再将所有的DSM文件信息打包到一个DSM文件中,然后对所有模块文件进行重新排列,生成ROM。

排序工具

上文已经提到了PRB具备模块排序功能,故下面介绍的2个排序工具仅针对imgfstools。

●G'reloc

该工具是用来为ROM的模块(module,通常是个DLL文件)地址进行重定位的,通常是BUILDOS之后的第一步操作。WM系统中的模块部分在移植后生成ROM之前必须对所有模块地址按.rom和.vm文件中的地址范围进行重新定位,以保证模块地址不冲突、不超范围,否则生成的ROM无法正常开机。

当然,对于直接分解的原始ROM,如果未加入新的模块文件,则没有必要重排地址。此工具虽然有图形界面,但是实际在使用时有命令行格式。值得一提的是,G'Reloc只能用于WM6.1以前的ROM,不支持WM6.5。

用法:G'Reloc -doit -dump

●WMReloc

和G'Reloc相比,WMReloc重排速度更快并且可以记录重排地址的日志,使用中相对稳定一些。WMReloc针对WM6.1和WM6.5有两个不同的版本。WMReloc没有图形界面,只是一个命令行工具,用法如下:

WMReloc -g[dir] -m[module] -s0[Slot0] -s1[Slot1] -l[logfile]

-g参数后是需要重排地址的文件夹;

-l参数后是记录日志的文件名称;

-m参数后是模块名称;

-s0指定Slot0部分的地址;

-s1指定Slot1部分的地址。

本文导航

分享到:

用户评论

用户名:

密码: