多普达公司从不释放818的刷机软件,这使广大818用户刷机不得不用SD卡方式来刷,这种方法太过复杂操作麻烦,很容易因为操作不慎刷坏机器。为了制作NBF文件,我搜索了很多资料,做了很多试验,终于找到了从818中备份ROM并制作成NBF制作方法。
需要的工具
pmemdump.exe(包含一个itsutils.dll,这两个文件要放在一起): 用来从手机中备份部分ROM
nbfdec.exe: 用来将NBF解密或加密(不同的PDA加解密方式不同,不一定适就其他PDA)
HTC64 Extended ROM Tool.exe 用来修改Extended Rom(不同的PDA加解密方式不同,不一定适就其他PDA)
GetDeviceData.exe 用来获取你手机的信息
制机文件介绍
818的刷机NBF文件有三个(如果不要Extended Rom,就只有两个)
nk.nbf: 这个就是微软著名的Windows CE系统。
ms_.nbf: 这个就是常说的Extended Rom
radio_.nbf: 这个是无线通迅模块
NBF文件是加密过的刷机代码,刷机器时被解密写入ROM, 所以只要找到加密方法,我们就可以从机器中备份并制作NBF。
获取你手机的信息
将GetDeviceData.exe复制到你的818中,并执行它,这时就会在818的WINDOWS目录产生一个信息文件DeviceData.txt, 如下

图中的PM10A就是设备类型,CHS就是语言代码(如果是英文就是WWE), T-MOB005是运营商名称。818的每个不同版本均有不同,请先得到这个文件,下面的步骤中将会用到。
818 ROM结构
这个是CE OS ROM,也就是WINDOWS MOBILE的核心部分.
首先我们来看看818的ROM结构(参考自http://wiki.xda-developers.com/index.php?pagename=DumpRom)
起始地址-结束地址 长度 内容
80000000-80040000 0040000 BootLoader
80040000-82400000 23C0000 osROM
82400000-82c00000 0800000 backup area ( contacts, calendar, etc )
82c00000-83f00000 1300000 extended rom
83f00000-83f80000 0080000 unused
83f80000-83fc0000 0040000 bootsplash image
83fc0000-84000000 0040000 device version + type information
制作NK.NBF
1. 首先来看看NBF的特征, 从其他语言刷机包中找一个现有的nk.nbf文件(可以从ftp://xda:xda@ftp.xda-developers.com/Magician/Shipped_ROMS/随便下载一个), 执行
复制内容到剪贴板
代码:
nbfdec -d nk.nbf nk.nba
用HEX EDITOR打开,头尾部分如下,

2. 从机器中备份ROM出来
在http://wiki.xda-developers.com/index.php?pagename=DumpRom,我们可以有两种方式备份CE ROM,一种是含BootLoader,一种是不含BootLoader, 分别如下:
pmemdump 0x80000000 0x2400000 nk.raw (这种方法备份的ROM包含BootLoader)
pmemdump 0x80400000 0x23C0000 nk.raw (这种方法备份的ROM不包含BootLoader)
(注意我用了nk.raw的名字,因为它对应的刷机文件就是nk.nbf,后文中也有同样的名字方式,如ms_.raw)
那么到底那个才是我们要的nk.raw呢,我想到一个方法,就是两个不同的nk.raw备份文件跟图一中的文件比较(比较方法略,你可以自己用HEX EDITOR打开对比), 结果发现NBF文件中的代码类似于包含BootLoader的那个备份
现在用pmemdump.exe得到nk.raw, pmemdump.exe是一个在开机状态运行的工具,连接手机与电脑,在cmd窗中执行
复制内容到剪贴板
代码:
pmemdump 0x80000000 0x2400000 nk.raw
3. 用hex editor修改:
用hex editor打开nk.raw和现有NBF转来的NBA文件进行对比,我们会发现nk.nba中0x80的节字在nk.raw中没有,在两个文件末尾,我们可以发现两个文件的长度也刚好相差0x80,,并在文件末尾删除或插入空字节以使nk.raw长度与nk.nba一致.在nk.nba中0x80之前的字节,我们可以在NK.NBA中看到有DeviceData.txt中得到的那些信息.

由此,可以判断出NK.NBA实际上就是在NK.RAW前面加了0x80字节的头信息.所以,我们可以从现有的NBF中复制这些字节,制作成nba.raw转nbf要加上的nbf头信息块!!!
这部分操作可以用ULTRAEDIT和hex editor来完成,具体如下(不贴详细步聚的图,如果你不明白请参照相关软件的说明资料):
-- 用ultraedit打开nk.raw,切换到16进制模式 (注意是打开的nk.raw)
-- 选择菜单 "编辑"->"16进制编辑"->"16进制插入或删除", 在打开的对话框选择插入,字节数输入128,保存退出
-- 用hex editor打开nk.raw和nk.nba, 从nk.nba中复制前面的128个字节(0x80之前的所有字节),再切换到nk.raw,确保光标在第一个字节,然后执行编辑->粘贴
-- 用DeviceData.txt中的信息替换128个字节中相应的内容(PM10A, T-MOB005, CHS等等,还有版本号请改为备份818中的实际版本号)
-- 把nk.raw改名为nk.nba, 这样就得到了nk.nba文件
4. 执行nbfdec.exe -e nk.raw nk.nbf, 得到nk.nbf
本贴内容涉及复杂操作,有问题请跟贴,我有时间将会回答,但请在发问之前多多尝试,我自己就是这样试出来的。
制作MS_.NBF
1. 从其他语言刷机包中找一个现有的ms_.nbf文件, 执行
复制内容到剪贴板
代码:
nbfdec -d ms_.nbf ms_.nba
用HEX EDITOR打开,头尾部分如下,

我们可以从图片字看到,MS_.NBA跟NK.NBA有着相似的头部信息块,另外我们可以到它的长度为0x13C0080,这与818的ROM结构表中有点不同(我做过试验,按表中的长度获取备份将是不完整的), 现在就根据这个长度来导出Extended Rom(当然你的818不能是刷过BIG STORAGE的,因为刷过的话就没有这部分了), 同步818与电脑,在电脑上输入
复制内容到剪贴板
代码:
pmemdump 0x82c00000 0x13C0080 ms_.raw, 得到ms_.raw
2. 用跟修改nk.raw类似的方法,修改ms_.nba
-- 用ultraedit打开ms_.raw,切换到16进制模式 (注意是打开的nk.raw)
-- 选择菜单 "编辑"->"16进制编辑"->"16进制插入或删除", 在打开的对话框选择插入,字节数输入128,保存退出
-- 用hex editor打开ms_.raw和ms_.nba, 从ms_.nba中复制前面的128个字节(0x80之前的所有字节),再切换到ms_.raw,确保光标在第一个字节,然后执行编辑->粘贴
-- 用DeviceData.txt中的信息替换128个字节中相应的内容(PM10A, T-MOB005, CHS等等,还有版本号请改为备份818中的实际版本号)
-- 另外比nk.raw要多注意的事,经过修改后文件的长度有点不一到,我们可以在ms_.raw后面删除或填充0字节,以确保ms_.raw修改后的长度与实际需要的长度一致。
-- 把ms_.raw改名为ms_.nba, 这样就得到了ms_.nba文件
3. 执行nbfdec.exe -e ms_.raw ms_.nbf, 得到ms_.nbf
4. 到了这一步,可以开始用HTC64 Extended ROM Tool.exe 做点有意思的事了, 定制EXTENDED ROM!!!. 用HTC64 Extended ROM Tool.exe解密文件(这是一个WINDOWS软件,具体操作我就不贴图了),我们可以得到一个ms_.fat, 这个文件是一个FAT镜像,我们可以用WINIMAGE打开它,这样就可以增加/删除EXTENDED ROM的文件。增加/删除时请注意同时修改CONFIG.TXT.
还可以利用HTC64 Extended ROM Tool.exe来修改开机画面。
关于Extended Rom中,有很多网友作过介绍,本人不再赘述.
所需软件点此下载