09年智手各组组长,组员重新招募中 发贴得礼品有实物,有金币和道具 重新招募09年各版版主 每月获奖名单
新人报到加分贴 对我们的意见告诉这里 新增奖品及奖励办法 广告招商
 
发新话题
打印

[转]WINCE ROM 定制(主要是NBF格式)

[转]WINCE ROM 定制(主要是NBF格式)

WINCE ROM 定制原帖见-http://bbs.pdafans.com/thread-266879-1-1.html

1.ROM的构成

rom常见的有这么几种 NBF NB0 NB1 NB2 BIN XIP


  • NBF
    这种是最常见的,也是咱们大家经常刷机使用的格式。
    构成:前32字节是rom头,依次是
    设备型号如PH20B
    '-'分隔符
    语言如CHN
    '-'分隔符
    版本如5.04.06
    '-'分隔符
    符号意义未知,可能是一个操作Id
    '-'分隔符
    1个16位的校验码
    所以下次大家修改版本号等时注意长度限制,前三个分隔符算在32字节里面,第四个分隔符不算
    接下来是256K的bootloader
    剩下的30.75M就是os的镜像了。
    NBF格式通常是用电脑通过串口或者USB口刷到手机里,它会覆盖手机设备的绝大部分重要区域。如果有错误,就必须返修了。


2。ROM的分解和合成

拿D700为例,把附件中文件解压,进入此目录dos窗口,输入
1.xda3nbftool -x nk.nbf nk.nba 0x20040521
;把nk.nbf文件转成nk.nba
2.prepare_imgfs nk.nba
;把nk.nba转成imgfs_raw_data.bin和imgfs_removed_data.bin
3.viewimgfs imgfs_raw_data.bin
;把上步生成的imgfs_raw_data.bin文件释放,在dump的目录下

ROM定制的重点
此时你就可以对dump目录进行定制了,如文件的ti添删,注册表的修改,自启动文件的修改
这个下面会详细介绍

4.buildimgfs
;定制完成后,重新生成imgfs_removed_data.bin文件
5.make_imgfs nk.nba  
;重新生成nba文件
6.xda3nbftool -c -u nk.nba  
; 因为做了修改,所以crc校验值会改变,此步重新生成新的crc校验
7.xda3nbftool -x nk.nba nk.nbf 0x20040521
;得nk.nbf

然后就可以用新做成的nk.nbf刷机了.

Tips: 第四步第五步中的imgfs_removed_data.bin、nk.nba 文件日期不会改变,但是不要认为此步两个文件没有变化。

For 多普达696:
第一步:xda2nbftool -x nk.nbf nk.nba 0x20040304
第七步:xda2nbftool -x nk.nba nk.nbf 0x20040304
其他步骤一样


3.注册表的处理
在ROM的分解和合成过程的第四步,我们得到了dump文件的目录。
里面的default.hv,user.hv就是对应的注册表文件,但是这两个文件不能直接用记事本打开修改。
解压附件中的工具,把以上两个文件拷入,进入目录的dos窗口,输入

1.set _FLATRELEASEDIR=.   
;这一步是设置环境变量
2.rgucomp -o default.hv -nologo > boot.rgu  
;这一步就是把default.hv转换成boot.rgu文件

下面就是操作重点
生成的boot.rgu就是标准的注册表文件,可用任意的一个文本处理软件打开,推荐editplus或者ultraedit。
(然后请手工在第一行加入如“REGEDIT4”,并存为unicode格式,这步注意,要不然下一步生成报错)

以加入中文内核为例,简单介绍一下:
在注册表中任意位置(不过最好把类似的注册表放在一起,这样清晰些)
加入如下几行:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FontLink\SystemLink]
  "Arial"="\\windows\\sunfon.ac3,SC_Song"

  "Courier New"="\\windows\\sunfon.ac3,SC_Song"

  "MS Sans Serif"="\\windows\\sunfon.ac3,SC_Song"

  "Tahoma"="\\windows\\sunfon.ac3,SC_Song"

  "Times New Roman"="\\windows\\sunfon.ac3,SC_Song"

  "Kingsoft Phonetic Plain"="\\windows\\sunfon.ac3,SC_Song"

这样中文显示就有了。
加入:

[HKEY_LOCAL_MACHINE\nls]
  "LegacyLocaleMode"=dword:1

  "SystemLCID"=dword:804

  "DefaultLCID"=dword:804

  "DefaultOCP"=dword:3a8

  "DefaultACP"=dword:3a8


[HKEY_LOCAL_MACHINE\nls\overrides]
  "LCID"=dword:804

这样中文区域就设置好了。

当然前提是要把sunfon.ac3中文字体和wince.nls中文区域文件拷到dump目录里去。

Tip:如果要使用其他字体也很容易,只要把上步的字体路径和字体名称修改成你想要的,并把相应字体文件拷入就可以了。
       如:如想使用微软雅黑字体,因为字体太大,10M多,所以不可能在rom中集成,所以你就可以改成

       "Tahoma"="\\Storage Card\\MSYH.TTF,\x6211\x7684\x6587\x6863"

     然后你把字体拷入你的存储卡(存储卡名为Storage Card,和上面对应),后面四个字符表示微软雅黑的unicode码。你也可以给这字体改个英文名,就不用写这个unicode字符了。
     当然,放在卡里可能还需要加些注册表,相关内容请参考
【1y】随心所欲--替换系统字体,何须修改注册表。(8月29日改善WM2005兼容性)

     把相关的注册表文件写入。

Tip2:这个注册表转换工具不支持中文字符,所以涉及中文字符请一律用unicode字符。关于如何找中文的对应unicode字符,下面会详细介绍。

Tip3:硬起后开机自动安装extroom中的软件设置地方,请在注册表中找到

[HKEY_LOCAL_MACHINE\Comm]
  "AutoRun"="\\Storage Card\\ExtROM\\AutoRun.exe"

  "AutoRunCFG"="\\Storage Card\\ExtROM\\cfg.txt"

哈哈,看到了么,就是这个。你可以按照你的意愿修改了。当然autorun.exe中路径你也要修改一下。
好了,不多说了,这个留着帖子里交流。相应的autorun.exe和extroom的定制会在后面详细说明。
好了,修改完毕。运行
3.rgucomp -b  
;这样就把上步的boot.rgu转化成boot.hv,把boot.hv改名为default.hv,拷入rom定制中生成的dump目录中覆盖原来的,好了,输入你自己的注册表就OK了。
Tip:这步没有加文件名,所以如果第一步你不是转化成boot.rgu这个文件名,你这步就要改成标准的boot.rgu文件名了,其他不认。




4.initflashfiles.dat文件的处理


这个文件是刷完系统后自动生成文件和目录的重要文件。

rom定制过程中生成了dump目录,而放入dump内的文件都只会出现在ppc的windows的文件夹根目录下。
那开始菜单内的快捷图标哪里来的?programm files内的东西怎么来的?
wm5的rom原理通过initflashfiles.dat文件来做到移动文件的。
initflashfiles.dat也是个文本,里面通过语句规定了硬启动后windows根目录下的文件如何自复制一个副本到指定的ppc其他目录内。

做一个示例:
文本里的语句
; App Button default links
Directory("\x005C\x0057\x0069\x006E\x0064\x006F\x0077\x0073\x005C\x0041\x0070\x0070\x0042\x0075\x0074\x0074\x006F\x006E\x0073"):-File("\x65E5\x5386\x002E\x006C\x006E\x006B","\Windows\calendar.lnk")

转成正常文字就是
Directory("\Windows\AppButtons"):-File("日历.lnk","\Windows\calendar.lnk")

其中
\x65E5 对应 日
\x5386 对应 历
\x002E 对应 .
\x006C 对应 l
\x006E 对应 n
\x006B 对应 k

意思就是这个文件
\Windows\calendar.lnk
放到
Windows\AppButtons
目录下,显示名称为日历.lnk
这样的话日历硬件按钮对应的指令就是打开日历。知道这个的话就方便了,你就可以任意指定按键映射了。

里面的005c之类均为unicode,因为initflashfiles.dat这个文件不支持中文。如果你不用写中文,当然就不用这么麻烦了,可以直接写英文了。




5。ROM的汉化


通过上面几步,你已经可以打造一个完美的中文内核了,下面的工作就是rom里面文字的汉化了。
这步其实没什么技术含量。

有两种方式
1。自己汉化
把那些对应的*.0409.mui用汉化软件自己汉化了,然后改称*.0804.mui
但是就是太繁琐了,因为文件太多,自己翻译太麻烦还不准。

Tip:如果没有找到对应的*.0409.mui,你也可以把对应的dll/exe文件用汉化软件汉化了,然后改成对应的*.dll.0804.mui/*.exe.0804.mui放到dump目录。


常用的汉化软件有Multilizer,ResHacker、eXeScope等,关于汉化软件的使用,不在本文讨论之内,可以在跟贴里探讨:)

2。找对应版本的中文原版汉化文件
比如我的rom是AKU3.2的,你可以找一个中文发行版本的rom,内核也为AKU3.2,这样你就可以把它的rom分解,把那些对应的*.0804.mui文件拷回来,然后把咱们rom里的那些*.0409.mui全部删掉,替换成0804的,然后重新生成rom。

Ok,你的中文界面中文内核rom出来了,赶紧刷机吧。
但是很不幸,还没有中文正式版本的基于AKU3.2的,这正是D700中文版本难产的重要原因。

我昨天找了半天,发现国内只有联想跟进的最快,它的et980现在最高版本是0818,但也还是基于AKU2.?,具体2点几版本我不太清楚。
但是我看到有3.0的中文版本测试图片出现,但此版本没找到,如果大家能搞到它的3.0中文版本,也可以了。
但即使有,它的版本也才刚到3.0,而我们的是3.2,呵呵,还是英文跟进的快呀。
这样,我们就可以先做个3.0的中文版本,不然只能做个AKU2的版本了。




为了使你的mui文件生效,你需要在注册表(就是前一步的default.hv)中加入

[HKEY_LOCAL_MACHINE\Security\ColdInit]
"Locale"=dword:00000804
"ColdInit2Done"=dword:00000001
"ColdInit1Done"=dword:00000001

[HKEY_LOCAL_MACHINE\MUI]
"SysLang"=dword:00000804
"Enable"=dword:00000001

Tips:0804是简体中文的,0409是英文对应的代码。




4。initflashfiles.dat文件的处理(续)

给大家几个转换unicode-字符的小窍门。

1。字符 -〉unicode
其实java就带了一个很好的转换工具。转到java的bin路径,如C:\Program Files\Java\jdk1.5.0_07\bin
输入
native2ascii -encoding unicode d:\1.txt d:\2.txt
(你现在d盘的1.txt里写入你要转换的中文字符,执行完之后你就可以在2.txt中找到它的对应unicode编码。)

tips:转码后的unicode都是形如\u5fae\u8f6f\u96c5\u9ed1,把\u替换成\xj就可以了。

2。unicode->字符
其实微软输入法也带了一个很好的工具。打开微软输入法,选择辅助输入法-〉unicode码输入。
对应的输入法图标也变了
这时假设你输入5fae,输入完e系统就自动出来了“微”,输入8f6f,系统就自动出现"软"






TOP

娃哈哈,看了一头雾水。。。



继续。。。
知我者谓我心忧,不知我者谓我何求。

TOP

半年前就用565+WM5了,只是不和稳定呀.
最近又修改了自已的WM5 ROM还是有点小问题,很好用,就是不能硬启,不明白,只能重刷当作硬启,晕.
部分软件不能很好运行,好多软件在手机解锁后仍要数字签名,否则不能用,WM3没这个问题;
所以一般是30天WM3,   2天WM5.
没钱买软件!所以只用XX的

TOP

引用:
原帖由 JXNCDLK 于 2007-2-12 13:51 发表
半年前就用565+WM5了,只是不和稳定呀.
最近又修改了自已的WM5 ROM还是有点小问题,很好用,就是不能硬启,不明白,只能重刷当作硬启,晕.
部分软件不能很好运行,好多软件在手机解锁后仍要数字签名,否则不能用,WM3没 ...
J大把你的wm5放出来给我们试试?

我用的DEAMON兄的wm5到了现在出现不小问题了:在某次的重起之后,画面一直停留在windows mobile 或者直接灸在  红 字界面上。。。

恢复办法只有再次  刷机 ,硬起没用。

能帮忙放出来我用用不??

这几天刷得我慌了。。。
知我者谓我心忧,不知我者谓我何求。

TOP

可以哟,只是我集成了N多软件在里面,还有几个关联到SD卡上的,我得把里面的个人信息改一下,
不过我是在乡下用无线上网卡上的网,慢得要命,怎么上传呀.

我的是565,问题是:不能硬启,坏了得重刷.没找到原因.同步与上网要加个CAB安装包,数字签名要加个CAB安装包.

集成软件见下图:
附件: 请点击下面广告并注册为本站会员便可下载或查看附件
没钱买软件!所以只用XX的

TOP

呵呵~J兄也有难题?!
唉!我对ROM一窍不通,上次想改一下,但是又不懂编程,改了但是用不了,就不掺和了!

TOP

J大带头讨论一下,相信答案很快就出来了·我旁听

TOP

这个教程基本上是比较全面的,只是好多要自己慢慢的消化

我就比较懒,一般都是把别人的拿来随便改下,加些自己喜欢的进去就行

TOP

回楼上的,我就是想懒一下·可我中意的rom居然是NBF的

TOP

引用:
NBF格式通常是用电脑通过串口或者USB口刷到手机里,它会覆盖手机设备的绝大部分重要区域。如果有错误,就必须返修了。
所以我说这个帖子要慢慢消化啊

上面这个说法不错,只是NBF也可以只包含OS部分,刷坏OS也可以重来,不至到需要返修的地步

TOP

不是很明白,慢慢看吧

TOP

学习一下

TOP

这个不错,谢谢楼主了!

TOP

高手

你是高手!!我的575刷585的ROM后蓝牙和设想头不能用!!帮我改一下了!!

TOP

高手

你是高手!!我的575刷585的ROM后蓝牙和设想头不能用!!帮我改一下了!!

TOP

好,仔细看看,自己定制个性rom,不错

TOP

学习一下

TOP

TOP

发新话题
版块跳转 
   京ICP备06029169号

本社区言论纯属发表者个人意见  与 智手移动中文网论坛 立场无关