定制 d900 rom 启动画面
定制 d900 rom 启动画面,适用 WM5
注意,只适用 D900 的 WM5 ROM,其他机型或 WM6 ROM 会有所变动,请勿轻易尝试
其实很简单,WM5 (不太清楚2k3和WM6,不过应该一样)的第一屏启动画面是作为 RSB 图像格式存储于 ROM 当中,至于 RSB格式就不多讲了,其实我也不是很明白它的编码格式,也不需要了解,附件中我会提供一个 BMP 与 RSB互转的工具。我们只要做找一个bmp文件转成rsb,然后将 rom 当中相应的内容替换掉就 ok 了。
需要注意的是,一个普通的rsb文件大小是614428字节,而rom当中的rsb格式只有614400字节,缺少rsb的文件头:
01 00 00 00 E0 01 00 00 80 02 00 00 05 00 00 00 06 00 00 00 05 00 00 00 00 00 00 00
一共28个字节,所以在从rom中复制出来的内容之前要加入这个文件头才可以被正确的识别为rsb格式,同样,一个转换好的rsb格式文件也应该删掉前28个字节然后再将剩余的内容替换到rom当中
说说过程吧:
喜欢自己动手的可以尝试一下:
用 HTC Extended ROM Tools 将 D900 ROM 解开,在生成的 nk.fat 文件中就有我们所要的东西
备份:
用 16 进制编辑器打开这个文件,在 0×3F00000 偏移处就是我们的rsb文件内容,一共614400个字节,复制出来然后加入前面的文件头就ok了。
修改:
新建一个480×640的bmp图像,然后用 RSBBMP 将文件转换为 rsb文件,用16进制编辑器将第29个字节到最后的内容一起替换到nk.fat的0×3f00000偏移处,打包rom
如果比较懒的可以用我的工具:
当然也要先解开rom,生成nk.fat就行
在命令行下执行
unisplash r nk.fat xxx.rsb —— 用于将rom中的rsb内容保存到 xxx.rsb,文件头已经加好了,可以直接用 rsbbmp 转换成bmp
unisplash w nk.fat xxxx.rsb —— 用于将 rsbbmp 转换出来的rsb文件的内容替换进 nk.fat,xxxx.rsb是rsbbmp生成的文件名,然后打包rom可以刷机了
注意:刷机以及更改rom有一定风险,所有损失自负
下载地址:
下载地址: splash_d900
Universal Rom Kitchen
[UPDATE 2006/12/12]
联系人拼音查找:
根据我汉化i-mat jasjar 1.90.96WWE的经验,应该是修改outres.dll文件,如果有对应mui文件的话则是修改对应的mui文件,如outres.dll.0409.mui,后面我以outres.dll文件为例,mui的修改是一样的:
dump目录里outres.dll的目录下面有一个outres.dll文件,如果没有的话在命令行进入dump目录,执行recmod outres.dll则可以生成outres.dll文件,recmod在我提供的工具里有
复制outres.dll文件到其他地方,然后删除outres.dll这个文件夹,将outres.dll文件复制回dump,使用资源编辑器,如 exescope,resource hacker之类的,我比较习惯passolo,打开outres.dll,在字符串资源里找
9$#ab$#ab$cde$cde$fgh$fgh$ijk$ijk$lmn$lmn$opq$opq$rst$rst$uvw$uvw$xyz$xyz$x
把它修改成
9$#A$#a$abc$吖八嚓$def$咑妸发$ghj$侅铪丌$klm$咔垃嘸$nop$拏噢妑$qrs$七呥仨$tw$他屲$xyz$夕丫帀
保存,对outres.dll文件进行数字签名
把outres.dll复制到手机的windows文件夹然后重启,或者打包rom刷机
[UPDATE 2006/12/11]
增加中文支持,看到问这个的比较多:
找一个支持中国的wince.nls,cestart之类的里面都有,覆盖原有文件,找一个中文字体,比如sunfon.ac3
修改地区设置为中国
[HKEY_LOCAL_MACHINEnls]
“SystemLCID”=dword:804
“LegacyLocaleMode”=dword:1
“DefaultLCID”=dword:804
增加字体链接
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftFontLinkSystemLink]
“Arial”=“Windowssunfon.ac3,SC_Song”
“Courier New”=“Windowssunfon.ac3,SC_Song”
“Tahoma”=“Windowssunfon.ac3,SC_Song”
“Times New Roman”=“Windowssunfon.ac3,SC_Song”
“MS Sans Serif”=“Windowssunfon.ac3,SC_Song”
“Kingsoft Phonetic Plain”=“Windowssunfon.ac3,SC_Song”
[UPDATE 2006/11/14]
To syn:
集成 A4 输入法
从 CAB 文件中可以看到文件结构,A4 有四个 skin,但是单个的文件名却相同,所以保存的时候要改下文件名,然后在 initflashfiles.dat 中指定路径和文件名,例如
;==========================================================================
; Application bib for ZTA4
;==========================================================================
Directory(“Windowsskinblack”):-File(“black.png”,“Windowsblack.png”)
Directory(“Windowsskinblue”):-File(“blue.png”,“Windowsblue.png”)
Directory(“Windowsskinorange”):-File(“orange.png”,“Windowsorange.png”)
Directory(“Windowsskinpink”):-File(“pink.png”,“Windowspink.png”)
Directory(“Windowsskinblack”):-File(“skin.ini”,“Windowsblackskin.ini”)
Directory(“Windowsskinblue”):-File(“skin.ini”,“Windowsblueskin.ini”)
Directory(“Windowsskinorange”):-File(“skin.ini”,“Windowsorangeskin.ini”)
Directory(“Windowsskinpink”):-File(“skin.ini”,“Windowspinkskin.ini”)
Directory(“WindowsHelp”):-File(“ZTA4.htm”,“WindowsZTA4.htm”)
Directory(“Windowsskin”):-File(“ZTA4_Skin.ini”,“WindowsZTA4_Skin.ini”)
Directory(“WindowsHelp”):-File(“ZTA4BackGround.gif”,“WindowsZTA4BackGround.gif”)
Directory(“WindowsHelp”):-File(“ZTA4Logo.gif”,“WindowsZTA4Logo.gif”)
;==========================================================================
; END Application bib for ZTA4
;==========================================================================
然后把所有文件复制到 dump 目录,同时对 ZTA4.dll 和 ZTA4Srv.dll 做数字签名,注册表也要做相应修改
default.rgu:
[HKEY_LOCAL_MACHINESOFTWAREAppsMicrosoft ZTA4_26]
“InstlDir”=“Windows”
“InstallDir”=“Windows”
“Instl”=dword:00000001
[HKEY_LOCAL_MACHINESecurityAppInstallMicrosoft ZTA4_26]
“InstallDir”=“Windows”
“Role”=dword:00000018
[HKEY_LOCAL_MACHINESecurityAppInstallMicrosoft ZTA4_26ExecutableFiles]
[HKEY_LOCAL_MACHINESystemCurrentControlSetControlLayoutse0010804]
“Ime File”=“windowsZTA4.dll”
“Layout Text”=“ZTA4”
user.rgu:
[HKEY_CURRENT_USERkeyboard layoutPreload]
@=“e0010804”
[HKEY_CURRENT_USERkeyboard layoutPreload1]
@=“e0010804”
OK,大功告成
[UPDATE 2006/10/13]
To fdps:
1. 没有试过微软拼音是否可行,不过a4是肯定可以的:
安装a4输入法,然后安装 sipchange,在程序里找到 sipchange,会列出所有输入法,然后选择一个喜欢的手写输入法,我用的是方框的那个,然后重启,这样可以同时用键盘输入拼音或着手写
其实sipchange和坛子里大家用的那个关联的程序是一个原理,只不过不带什么输入法,有个简单的选择界面,个人觉得比较顺手
Sipchange http://blog.waynezhang.com/downloads/sipchange.cab
A4 [url]http://blog.waynezhang.com/downloads/ZTA4_261.PPC2005_DefaultPY.v2.0.1.rar[/url]
2. 在HKCU中有一项 Defaultim,改成其他输入法的 clsid 就可以了
[UPDATE 2006/10/12]
To fdps:
具体的就不是很清楚了,如果仅仅是因为preload的layout,那么所有的中文rom不是都不能用城际通了?826的打了补丁拼音输入法就不能用了么?
正德的输入法没有看过,不过移植mbox的话同时最好将全屏手写一起移过来,他们所依赖的文件还分的不是很清楚,所以就一股脑移过来好了,最好把正德的注册表导出来看看有什么区别,所有hanwang关键字的还有和那几个dll文件相关的项
至于输入法的调用,826和正德都是基于繁体版修改的,如果你仔细比较过的话会发现所有的繁体rom都比英文rom好调用,坛子里有人说是因为wm5系统对输入法的缓存有一定限制,那么只能推测中文输入法占用内存必然高于英文rom,而dopod对于繁体的rom肯定是对输入法的部分有所修改,具体是哪里就不知道了
对于输入法的一点点建议:
设微软拼音为默认输入法,然后安装 a4 输入法,安装 sipchange 关联一个习惯的手写输入法,这样软起后会发现可以直接用手写输入法,同时也可以使用键盘来拼音输入
[UPDATE 2006/10/11]
To shishan:
如果只是输入法的话可以在注册表里禁掉不用的输入法,安装坛子里的拼音包就行了,相信比修改rom来的快,其实大家修改rom的初衷只不过是在英文rom里加入中文支持而已
PS:如果安装想将拼音输入法设为默认就要安装SdkCert.cab,很多地方都下的到,同时对拼音输入法的chsime003.dll, sskim.dll, sskim.192.dll三个dll文件做数字签名
To fdps:
我之前加输入法的都是826的,确实也发现了某些字不能识别的问题,替换正德的是一样的,按照我下面说的就可以了,把正德的rom解开,复制相应的文件和注册表项就行
[UPDATE 2006/10/09]
To Henry:
这个是你的命令不正确,检查一下参数和 default.hv 的路径;目前所有的rom都是这两个文件,不会是其他文件
To Natas:
坛子里我已经写出来那三个输入法的添加方法
[UPDATE 2 2006/09/27]
TO fdps:
输入法大概是:
default.hv:
[HKEY_CLASSES_ROOTCLSID{5AAFAF99-8D99-4466-A66D-95C44B608A84}]
@=“全屏手写输入”
[HKEY_CLASSES_ROOTCLSID{5AAFAF99-8D99-4466-A66D-95C44B608A84}IsSIPInputMethod]
@=“1”
[HKEY_CLASSES_ROOTCLSID{5AAFAF99-8D99-4466-A66D-95C44B608A84}InprocServer32]
@=“HWPenCE.dll”
[HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCH]
“CalibrationData”=“501,496 848,232 849,767 158,769 156,230 “
“DriverName”=“hwTouch.dll”
[HKEY_LOCAL_MACHINESOFTWAREHanWang]
[HKEY_LOCAL_MACHINESOFTWAREHanWangHangWang Pen for WinCE]
“Recognizer range”=“600E”
“Recognizer delay”=“400”
“Ink type”=“2”
“Ink color”=“0”
“Ink width”=“1”
“Ink speed”=“10”
“Default input panel”=“0”
“Screen segment”=“1”
“Sound on”=“1”
“Study”=“0”
[HKEY_LOCAL_MACHINESOFTWAREHanWang]
[HKEY_LOCAL_MACHINESOFTWAREHanWangHangWang Pen for WinCE]
“Recognizer range”=“600E”
“Recognizer delay”=“400”
“Ink type”=“2”
“Ink color”=“0”
“Ink width”=“1”
“Ink speed”=“10”
“Default input panel”=“0”
“Screen segment”=“1”
“Sound on”=“1”
“Study”=“0”
[HKEY_CLASSES_ROOTCLSID{124D7CDC-CF2D-418F-8BB4-4395AD048B79}]
@=“手写输入”
“TimeOut”=dword:00000001
[HKEY_CLASSES_ROOTCLSID{124D7CDC-CF2D-418F-8BB4-4395AD048B79}InprocServer32]
@=“mboxcht.dll”
[HKEY_CLASSES_ROOTCLSID{124D7CDC-CF2D-418F-8BB4-4395AD048B79}IsSIPInputMethod]
@=“1”
[HKEY_CLASSES_ROOTCLSID{124D7CDC-CF2D-418F-8BB4-4395AD048B79}DefaultIcon]
@=“mboxcht.dll,0”
[HKEY_CLASSES_ROOTCLSID{F50603D1-CF2F-41d8-A74B-651226633FF0}]
“Default”=“拼音输入”
[HKEY_CLASSES_ROOTCLSID{F50603D1-CF2F-41d8-A74B-651226633FF0}DefaultIcon]
“Default”=“sskim.dll,0”
[HKEY_CLASSES_ROOTCLSID{F50603D1-CF2F-41d8-A74B-651226633FF0}IsSIPInputMethod]
“Default”=“1”
[HKEY_CLASSES_ROOTCLSID{F50603D1-CF2F-41d8-A74B-651226633FF0}InprocServer32]
“Default”=“sskim.dll”
[HKEY_LOCAL_MACHINESystemCurrentControlSetControlLayouts]
[HKEY_LOCAL_MACHINESystemCurrentControlSetControlLayoutse0010804]
“Keyboard Layout”=“00000409”
“Ime File”=“chsime03.dll”
“Layout Text”=“Intelligent IME 2003”
user.hv
[HKEY_CURRENT_USERControl PanelInput MethodHot Keys�0000012]
“Ime”=dword:58163972
“KM”=dword:49154
“VK”=dword:190
[HKEY_CURRENT_USERControl PanelInput MethodHot Keys�0000011]
“Ime”=dword:58163972
“KM”=dword:49156
“VK”=dword:32
[HKEY_CURRENT_USERControl PanelInput MethodHot Keys�0000010]
“Ime”=dword:58163972
“KM”=dword:49154
“VK”=dword:32
[HKEY_CURRENT_USERControl PanelInput MethodHot Keys�0000100]
“Ime”=dword:58163972
“KM”=dword:49153
“VK”=dword:112
[HKEY_CURRENT_USERkeyboard layoutPreload]
“Default”=“e0010804”
[HKEY_CURRENT_USERkeyboard layoutPreload1]
“Default”=“e0010804”
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersion]
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionCHSIME03]
“ModeConfig”=dword:1048576
“Learning File 1”=“WindowsPUserSx.DAT”
“Learning File 2”=“WindowsPUserLx.DAT”
“NoPropertyUI”=dword:1
“PPC”=dword:1
“Vertical”=dword:1
“ShowState”=dword:0
“AutoCandAccel”=dword:1
“SIPDnPinyinType”=dword:1
“SIPUpPinyinType”=dword:2
文件:
拼音:sskim.dll sskim.192.dll chsime03.dll
方框手写:mboxcht.192.dll mboxcht.dll
全屏手写和方框手写联系比较紧,我还不是很清楚具体如何分开
除以上文件外,还需要复制所有hw开头的文件,所有扩展名为2bp, tbl, imd的文件,记得签名
[UPDATE 2006/09/27]
TO HUNDA:
这个取决于你所加的软件,如果软件需要一些必要的注册表项就要加入,同时,如果只是普通的应用程序而你也不介意第一次运行时有什么警告的话你也不需要对它进行数字签名
[UPDATE 2006/09/25]
TO 画神:
很抱歉我从来没有遇到过这个问题,只能建议你检查一下 nk.fat 的路径是否正确,并且保证中间的所有操作没有错误,尤其是make_imgfs 和 prepare_imgfs 时一定要加上 -nosplit 选项
TO leslie3366:
Qtek 1.31.76 在 XDA 上有,Uploads/Universal 下面
TO syh:
如果有空余时间我可以做,但是仍然希望你能自己动手,如果制作过程中有什么疑问可以和我一起讨论
TO hzx197920:
替换英文字体很简单,坛子里有类似的帖子,你可以参考一下,大概就是把字体复制到 dump 文件夹,然后修改注册表,增加 F哦那天Link 下的内容,但一定要保证字体名称和字体的文件名是正确的,尤其是字体名称,这个很容易被人忽略,每一个字体都有自己的名字,定义在字体文件里,例如 simyou.ttf 的幼圆字体名称为 YOUYUAN,而雅黑的默认应该是 Microsoft YaHei,注意空格和大小写,如果实在不确定的话,可以用WinCE CAB Manager打开坛子里的幼圆或者雅黑安装包看一下,替换自己字体的话就一定要知道它的字体名称
AND:
修改字体有很多工具,大家可以去试一下 FontCreator,google 搜一下就可以下到,这个工具可以替换字体里的内容,修改字体名称等等,甚至可以修改类似 STHeiti 这样只在 Mac 和 Linux 下工作的字体为 Windows 所用,不过修改这样的字体比较麻烦并且容易出错,不推荐
Universal Rom Kitchen
一、前言
Universal不用多说了,就是传说中的 Dopod D900, T-Mobile MDA Pro…… 方便起见,地下就称其为900了
900已经上市很久,却迟迟未在大陆销售,所以也一直没有官方的简体rom,所以对广大大陆的机油们,900什么最难得?rom!
用了这么久的900,刷了无数次rom,从最开始的简体测试版到正德beta,2006,然后几乎所有的英文rom。先说说这几个rom吧
简体测试版:1.00.00WWE的,速度很慢,不过还算稳定,中文支持都没有问题,输入法也是标准的微软拼音,方格手写和全屏手写,不过不支持蓝牙立体声,版本比较老,bug可能比较多
正德:正德的rom也算不错,只可惜在我的900上总是有问题,关机后假死,没有声音之类,所以……不好多做评论
8.26:这个版本很不错,是我所见过的最完美的一个简体rom了,基于1.30.108CHT繁体版修改的,各方面都很不错,不过蓝牙立体声的效果就实在是……
英文rom其实都差不太多,o2的据说比较稳定而Qtek的据说比较快,其实Qtek之所以感觉快是因为Qtek的rom附加的软件极少,系统很干净。我也很喜欢Orange的today(很久以前刷的,如果不是orange的,抱歉),很特别,不同于传统的today画面,不过速度实在太慢,所以放弃了。其他的都差不多了,而单论版本的话最新的应该是Qtek的1.31.76,settings里已经有关于GPS的选项了
二、dump your rom
不好意思,前面废话了一通,现在就让我来告诉大家定制rom是多么简单,而你所需要的,只是细心+耐心+时间
1. 必备的工具
HTC Extended ROM Tool
用来把我们的nbf格式的rom解开成fat格式,以及将fat格式的rom编码回nbf格式
imagefs tools
释放我们的fat rom,以及将dump出的文件压缩回fat格式
rgu hv edit
编辑注册表的工具
ultra edit
修改文件,其他的编辑工具也可以,但是一定要支持编码的转换,因为我们所编辑的文件都将是 unicode 编码并且是 dos 换行符的
WinCE CAB Manager
制作和查看cab包,如果你想加入软件的话,必备
Signcode
为文件增加数字签名
2. action
仔细看了上面工具的说明的话,你就应该直到我们的流程了,首先用 htc extended rom tool 解码 rom,然后用 imagefs tools 解开,编辑过后再用 imagefs tools压缩,接着 htc extended rom tool 编码,刷机就 ok 了:
1)准备工作,将我们的工具和rom解压缩到一个文件夹,本文中为 c:temp
2)运行 htc extended rom tool

第一步我们选择 decode,然后找到我们的 nk.nbf 文件
然后点 next

不需要做任何修改,直接点decode,稍等片刻,程序会提示 decode successful,在文件夹下会多出来一个nk.fat和一个nk.prj文件,前者就是我们的主角了
3)这一步开始我们将要在dos下进行操作,选择开始->运行,输入cmd,回车,现在打开了一个 dos 窗口,进入我们的 rom 文件夹
cd temp
解开 rom 文件需要两步,执行 prepare_imgfs nk.fat -nosplit
对于 900 rom,这一步的 nosplit 参数一定要加,否则后面的步骤将无法继续
C:temp>prepare_imgfs.exe nk.fat -nosplit
Searching for IMGFS start… Found at 00640000
Dumping IMGFS …
Done!
C:temp>
现在在我们的 temp 文件夹下出现了两个新的文件,imgfs_raw_data.bin 和 imgfs_removed_data.bin,我们的数据都在前者,而后面的那个文件试空的,不必去理会它,接着执行 viewimgfs.exe imgfs_raw_data.bin
C:temp>viewimgfs imgfs_raw_data.bin
guidBootSignature: F8 AC 2C 9D E3 D4 2B 4D BD 30 91 6E D8 4F 31 DC
dwFSVersion: 00000001
dwSectorsPerHeaderBlock: 00000001
dwRunsPerFileHeader: 00000001
dwBytesPerHeader: 00000034
dwChunksPerSector: 00000008
……
这一步将我们的rom中的文件全部解出来,存放在dump文件夹下,屏幕输出会比较多,没什么错误就行了,ok,现在看看我们的 c:temp 下已经多了一个 dump 文件夹,所有文件都在里面了,具体的修改和说明我会在后面给出,下面我们看看修改好后如何再把它保存为rom文件
三、编码 rom
还是在 dos 命令行,执行 BuildImgfs.exe
C:temp>BuildImgfs
……
Processing “xls2pxl.dll” as module
Processing “xmeevtsnd.dll” as module
Processing “Zip.lnk” as file
Processing “Zip_(ht).htm” as file
Processing “zlib.dll” as module
Processing “zoom.bmp” as file
Total Sectors: 0000
Used Sectors : 1a920
Free Sectors : fffe56e0
然后执行 make_imgfs.exe nk.fat -nosplit
c:temp>make_imgfs nk.fat -nosplit
Searching for IMGFS start… Found at 00640000
Fixing… Done!
同样,nosplit参数必不可少
现在 nk.fat 已经更新了,用 htc extended rom tool 编码就行 ,运行 htc extendedrom tool,这次我们选择 encode,然后找到我们的 nk.prj 文件,看清楚了哦,是 nk.prj 文件,然后不用做任何修改,选择 encode ,紧接着程序会有两个警告,一个是问是否覆盖已有rom,另一个是 FAT16 is too large, continue at your own risk,不用理会,全部 ok,现在我们已经生成了新的 rom,还等什么,刷机吧
四、文件说明
这一节是大家比较关心的,关于 rom 里的文件(dump文件夹下),老实说我也并不了解每个文件都是做什么的,一般的修改大家只要知道一些必要的东西就可以了。
rom 的很多文件都是隐藏文件,所以我们要先把它们的隐藏,系统和只读属性去掉才可以编辑
rom 里的大多数 dll 文件都是作为 module 存在的,可以看到一个 dll 文件夹下 有一个同名的 dll 文件和 imagebin 以及 s001 之类的文件,这些文件在编码 rom 的时候会做特殊处理。目前据我所知,我们自己是无法建立 module 的,幸运的是,直接把 dll 文件拷贝进去也同样有效
default.hv 注册表文件,包括HKLM和HKCR里的内容,文件是编码过的,需要用 rgu 转换
user.hv 和default.hv一样是注册表文件,保存这 HKCU 下的所以内容
initflashfiles.dat 大家可能已经注意到了,dump文件夹下除了 module 外没有其他的文件夹,那么我们所看到的 windows 下的文件夹呢?答案是它们都被定义在这个文件里,类似一个虚拟文件系统,系统在启动的时候会将指定的文件映射到文件夹下面
下一节我们来讲讲注册表的修改
五、修改注册表
前面提过那两个注册表文件,default.hv 和 user.hv,它们是经过特殊编码的,所以我们需要先将它们转换为我们常见的注册表文件,同样要在 dos 命令行下操作
C:temp>rgucomp -o dumpdefault.hv -nologo > default.rgu
o参数用来指定文件,而nologo参数代表不要输出 microsoft 的版权信息,后面的 > default.rgu 是 dos 的管道重定向,将标准输出流的内容写进 default.rgu 文件,在第一次执行的时候我们可能会遇到一些错误,产生的文件内容只有一句 wmain: (RGUComp) !ERROR the _FLATRELEASEDIR environment variable is not set,这是因为我们没有设置一个必备的环境变量,很简单
C:temp>set _FLATRELEASEDIR=.
C:temp>rgucomp -o dumpdefault.hv -nologo > default.rgu
这时我们生成的文件应该已经包含注册表项了,需要注意的一点是,如果注册表内容含有中文,在输出的文件里会变为空内容,所以修改已有的中文rom会比较麻烦,需要在 900 中导出注册表,然后对照注册表来补全我们的 rgu 文件。这只在 hv 到 rgu 的转换中存在,对于含有中文的 rgu 文件在转换为 hv 文件时则不会有任何问题。
除了上面将的中文的问题,对于 rgu 文件的修改还要注意几个问题:
文件头,这个也不算什么问题,不过困扰了我很久,结果发现……文件头缺少一行 REGEDIT4,用来说明文件内容是注册表文件,要手动加进去
文件的换行符,*nix 的换行仅有一个换行符存在,而 dos 和 windows 的换行则是一个换行符和一个回车符,相对多一个字符,所以在用 ultra editor 打开 rgu 文件时会提示是否转换为 dos 格式,这时要选择 yes
文件的编码,rgu 文件同意采用 unicode 编码,以保证非英文内容的正常存储,所以我们在 ultra editor 中也要做一下相应转换,选择 文件 > 转换 -> ASCII 到 Unicode,这时我们的 ultra editor 的状态栏应显示为 UDOS

看到了么?在行列号边上的那个,rgu 文件修改完成后,我们需要把它转换为 hv 文件,这个过程中程序只认 boot.rgu 文件,所以我们要先把文件复制一份名为 boot.rgu 的文件,然后转换,同样,生成的文件叫做 boot.hv ,我们在复制的时候也要指定文件名
C:temp>copy default.rgu boot.rgu
C:temp>rgucomp -b
Microsoft ® RGUComp Version 1.0.000
Registry file processor and hive builder.
Copyright © 2004 Microsoft Corporation All Rights Reserved.
built: Nov 19 2004 15:17:13
importing registry file “.boot.rgu”…
(RGUComp) done!
C:temp>copy boot.hv dumpdefault.hv
注意,默认情况下我们的很多文件属性会设为隐藏或只读或系统,所以我们的复制可能不会成功,需要先改变它们的属性,在我的电脑里可以搞定,或者
C:temp>attrib -s -r -h dumpdefault.hv
现在可以用新的文件覆盖它了
对于 user.hv 的修改也同样
五、加入你的第一个软件
加入软件的步骤其实很简单,把软件的文件拷贝到dump文件夹下,修改注册表,必要的话修改文件夹映射,有朋友希望能加入梅花p51,那么我就以梅花p51来做个例子吧。在这之前,还要说一下数字签名
1)数字签名
我们在安装应用的时候系统会有安装程序未签名的警告,在第一次启动某个应用软件的时候也会有类似的警告,这是因为Windows Mobile 5 采用了证书签名的机制来保护系统不被恶意程序所破坏。Windows Mobile 5会将一些经过官方确认的证书保存在一个信任列表里,经过这些证书签名的程序才具有访问系统内部资源的权利。而一个没有经过信任列表里的证书签名的应用程序则不具备这种权利,尽管我们选择了让系统相信这个应用并执行它,它仍然被挡在系统资源之外。在访问系统资源的时候它也仍然是被禁止的。看到这里你也许已经明白了,我们把海鹰或者梅花又或者是微软拼音设置为默认输入法的时候,启动机器会出现白屏的真正原因?对了,就是因为它们没有经过可靠的证书签名,明白了这个原因你可能又会想,找个可靠的证书签名不就好了么?不幸的是这些可靠的证书我们是拿不到的,它只能在microsoft或者dopod或者t-mobile之类的公司内部存在,而其他的个人是不可能轻易拿到的。不过,还有个好消息就是,我们可以有其他的证书来替代这些证书。Microsoft对开发者提供了一个用作开发测试的证书,由于是用作开发测试的,所以这个证书对于系统资源有全部的访问权,这个包我们可以在Microsoft的SDK里找到。
明白了这些道理,大家可能已经想到了解决方案,就是在PPC上安装SDK的证书,然后用这个证书来签名我们的梅花输入法,这样就可以把它设置为默认输入法了,没错,实践证明这个确实是可行的
关于这个SDK的证书,其实大家可能都用过了,在PPC端的安装包叫做SDKCert.cab,眼熟?没错,就是ozVGA,MRTrueVGA之类应用所带的。这时你应该明白了,ozVGA必须有可靠的数字签名才能够正确的替换系统资源,否则启动的时候一样会白屏。现在又有了新的问题,如果我们在 rom 里面把梅花设为默认输入法,那么我们必须在 rom 里同样插入我们的证书,否则系统根本无法启动,也就没有其他任何机会让你来安装这个证书了。那么,我们必须先知道这个cab包到底对系统做了些什么,我不想只告诉大家结果,因为过程更加重要。
其实除了证书之外,注册表里还存放这关于这些安全机制的策略:
[HKEY_LOCAL_MACHINESecurityPoliciesPolicies]
“00001027”=dword:1
“00001025”=dword:1
“00001024”=dword:1
“00001023”=dword:1
“00001021”=dword:c00
“00001020”=dword:1
“0000101f”=dword:1
“0000101e”=dword:1
“0000101d”=dword:1
“0000101b”=dword:1
“0000101a”=dword:0
“00001019”=dword:8c
“00001018”=dword:10
“00001017”=dword:80
“00001011”=dword:1
“0000100f”=dword:e90
“0000100e”=dword:40
“0000100d”=dword:c00
“0000100c”=dword:800
“0000100b”=dword:c80
“00001009”=dword:3
“00001008”=dword:1
“00001007”=dword:40
“00001006”=dword:1
“00001005”=dword:10
“00001001”=dword:2
“00001000”=dword:8
理论上讲修改这个策略也可以达到我们的目的——让没有签名的程序访问系统的全部资源,不过我并不推荐这么做,这样因为这样做会完全破坏系统的安全机制,导致其他的恶意应用破坏我们的系统。
再看看我们的证书,系统将证书全部存放在 [HKEY_LOCAL_MACHINECommSecuritySystemCertificates] 里,而对于那些绝对信任的证书存放在 [HKEY_LOCAL_MACHINECommSecuritySystemCertificatesPrivileged Execution Trust Authorities] 里,我们只要将 SDKCert 的证书放在这里就行了
要看到 SDKCert.cab 的内容,大家可能想到用WinCE CAB Manager,这个软件是用来制作 ppc 的 cab 安装包的,当然也可以看到 cab 的内容了,包括文件、注册表、快捷方式等等。不过很失望的是,用这个软件打开的 SDKCert 居然是空的,文件和注册表的内容全部都没有定义,可是它确确实实是对系统有所改动,那么在哪里呢?我们试试直接看它的文件吧,用WinRAR打开,我们会发现它不同于其他的 cab 包,一般的 cab 包只有有几个以001、002之类做扩展名的二进制文件,而这个包则有所不同,它只有一个 _setup.xml 文件,这个文件用来定义一些按照某种对注册表修改的行为,看看它的内容吧:
<?xml version=“1.0” encoding=“utf-8” ?>
<wap-provisioningdoc>
<!—
=========================================================
Privileged Certificates
=========================================================
—>
<characteristic type=“CertificateStore”>
<characteristic type=“Privileged Execution Trust Authorities”>
<!—
SDK Failsafe Priv Root —>
<characteristic type=“1c28a327d2dc579d241f2f83e98c1ef8ffbf1e82”>
<parm name=“EncodedCertificate” value=”…” />
</characteristic>
<!—
SDK Priv App Root —>
<characteristic type=“d4fb8924cfba6c9c67360e7d6512ffde99d2d283”>
<parm name=“EncodedCertificate” value=”…”/>
</characteristic>
</characteristic>
</characteristic>
<!—
Microsoft Visual Studio Signing Authority —>
<characteristic type=“CertificateStore”>
<characteristic type=“Privileged Execution Trust Authorities”>
<characteristic type=“884B8CDDB6FF1A3D2FF4BC09EC45E2AE2CCB244C”>
<parm name=“EncodedCertificate” value=”…”/>
</characteristic>
</characteristic>
</characteristic>
<!—
=========================================================
Unprivileged Certificates
=========================================================
—>
<characteristic type=“CertificateStore”>
<characteristic type=“Unprivileged Execution Trust Authorities”>
<!—
SDK Unpriv App Root —>
<characteristic type=“472a80336e261f2f420f8f78b5121383559ad4e3”>
<parm name=“EncodedCertificate” value=”…”/>
</characteristic>
</characteristic>
</characteristic>
<!— Microsoft Visual Studio Signing Authority unprivileged cert —>
<characteristic type=“CertificateStore”>
<characteristic type=“Unprivileged Execution Trust Authorities”>
<characteristic type=“11489FB3827BE46623CA7329C0BA85AB1F810A19”>
<parm name=“EncodedCertificate” value=”…”/>
</characteristic>
</characteristic>
</characteristic>
<!—
=========================================================
SPC Store
=========================================================
—>
<characteristic type=“CertificateStore”>
<characteristic type=“SPC”>
<!—
All PRIV Certs must have role = 222 —>
<!—
SDK Failsafe Priv Root —>
<characteristic type=“1c28a327d2dc579d241f2f83e98c1ef8ffbf1e82”>
<parm name=“EncodedCertificate” value=”…” />
<parm name=“Role” value=“222” />
</characteristic>
<!—
SDK Priv App Root —>
<characteristic type=“d4fb8924cfba6c9c67360e7d6512ffde99d2d283”>
<parm name=“EncodedCertificate” value=”…”/>
<parm name=“Role” value=“222” />
</characteristic>
<!—
All UNPRIV Certs must have role = 16 —>
<!—
SDK Unpriv App Root —>
<characteristic type=“472a80336e261f2f420f8f78b5121383559ad4e3”>
<parm name=“EncodedCertificate” value=”…”/>
<parm name=“Role” value=“16” />
</characteristic>
</characteristic>
</characteristic>
</wap-provisioningdoc>
我们所关心的只有 Privileged Execution Trust Authorities 里的内容,对比一下我们会发现在注册表里存放的证书都是 blob=hex:….. 之类,它们的值都是一些16进制值,而这里所存放的值则是一些莫名奇妙的文本,其实它们是经过 MIME 编码的,没错,就是我们 email 的那种编码,而 type 的值则是我们的项目名,这样就很简单了,先在 ppc 端安装 SDKCert,然后用注册表编辑器吧 [HKEY_LOCAL_MACHINECommSecuritySystemCertificatesPrivileged Execution Trust Authorities] 下面对应我们的 type 值的内容导出来就可以了,下面是我导出的结果:
[HKEY_LOCAL_MACHINECommSecuritySystemCertificatesPrivileged Execution Trust AuthoritiesCertificates1C28A327D2DC579D241F2F83E98C1EF8FFBF1E82]
“Blob”=hex:03,00,00,00,01,00,00,00,14,00,00,00,1c,28,a3,27,d2,dc,57,9d,24,1f,2f,83,e9,8c,1e,f8,ff,bf,1e,82,20,00,00,00,01,00,00,00,83,04,00,00,30,82,04,7f,30,82,03,6b,a0,03,02,01,02,02,10,4d,00,b4,e3,45,00,de,92,45,e0,66,55,99,62,e4,6f,30,09,06,05,2b,0e,03,02,1d,05,00,30,81,90,31,81,8d,30,81,8a,06,03,55,04,03,1e,81,82,00,54,00,45,00,53,00,54,00,20,00,55,00,53,00,45,00,20,00,4f,00,4e,00,4c,00,59,00,20,20,13,00,46,00,61,00,69,00,6c,00,73,00,61,00,66,00,65,00,20,00,43,00,6f,00,6e,00,66,00,69,00,67,00,75,00,72,00,61,00,74,00,69,00,6f,00,6e,00,20,00,52,00,6f,00,6f,00,74,00,20,00,66,00,6f,00,72,00,20,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4d,00,6f,00,62,00,69,00,6c,00,65,00,20,00,53,00,44,00,4b,30,1e,17,0d,30,34,31,31,30,38,32,33,30,30,35,33,5a,17,0d,30,39,31,32,33,31,30,38,30,30,30,30,5a,30,81,90,31,81,8d,30,81,8a,06,03,55,04,03,1e,81,82,00,54,00,45,00,53,00,54,00,20,00,55,00,53,00,45,00,20,00,4f,00,4e,00,4c,00,59,00,20,20,13,00,46,00,61,00,69,00,6c,00,73,00,61,00,66,00,65,00,20,00,43,00,6f,00,6e,00,66,00,69,00,67,00,75,00,72,00,61,00,74,00,69,00,6f,00,6e,00,20,00,52,00,6f,00,6f,00,74,00,20,00,66,00,6f,00,72,00,20,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4d,00,6f,00,62,00,69,00,6c,00,65,00,20,00,53,00,44,00,4b,30,82,01,22,30,0d,06,09,2a,86,48,86,f7,0d,01,01,01,05,00,03,82,01,0f,00,30,82,01,0a,02,82,01,01,00,ca,fa,5c,04,f6,63,ae,3e,38,41,0a,66,e0,90,a4,e6,fd,ba,96,f2,cb,74,10,9b,98,95,ed,f0,2d,17,d9,29,0f,23,af,6a,14,e5,dc,60,d4,20,19,85,38,57,75,96,4b,14,52,07,c1,ff,0a,bd,a4,03,46,cc,78,39,c3,04,77,c0,99,17,5b,4a,00,cb,be,c9,ed,e2,ae,c1,21,cf,02,bc,aa,41,da,58,cd,92,31,22,3c,63,2b,ae,0a,53,99,30,1c,d0,38,07,b6,67,d9,e2,2b,2b,b0,cc,d9,99,db,81,23,8f,12,cc,b0,02,77,1f,fa,c5,01,54,c8,54,b0,0b,c5,fd,f8,bd,5e,3c,e7,9b,d7,73,37,5e,06,be,a9,bf,53,02,5e,2d,20,59,79,c1,ac,5b,7b,e1,1f,03,58,46,46,b6,b8,fc,d2,7a,c5,5f,71,29,06,58,15,9b,de,24,f1,d8,a0,eb,54,b9,0b,e9,d6,87,df,85,de,90,a9,49,85,84,f3,27,34,01,5c,82,01,6b,68,c0,36,bb,4a,0e,10,db,dd,99,c1,30,b6,70,c4,56,93,4d,b9,2c,0c,9e,99,e8,11,00,e3,cd,dd,36,aa,c2,15,bd,cb,5e,33,98,e8,4a,d0,91,a9,66,ae,eb,24,88,40,f3,c7,49,02,03,01,00,01,a3,81,da,30,81,d7,30,0d,06,03,55,1d,0a,04,06,30,04,03,02,07,80,30,81,c5,06,03,55,1d,01,04,81,bd,30,81,ba,80,10,c8,c1,71,1f,6d,77,76,3d,cb,72,9d,67,fe,d8,49,ac,a1,81,93,30,81,90,31,81,8d,30,81,8a,06,03,55,04,03,1e,81,82,00,54,00,45,00,53,00,54,00,20,00,55,00,53,00,45,00,20,00,4f,00,4e,00,4c,00,59,00,20,20,13,00,46,00,61,00,69,00,6c,00,73,00,61,00,66,00,65,00,20,00,43,00,6f,00,6e,00,66,00,69,00,67,00,75,00,72,00,61,00,74,00,69,00,6f,00,6e,00,20,00,52,00,6f,00,6f,00,74,00,20,00,66,00,6f,00,72,00,20,00,57,00,69,00,6e,00,64,00,6f,00,77,00,73,00,20,00,4d,00,6f,00,62,00,69,00,6c,00,65,00,20,00,53,00,44,00,4b,82,10,4d,00,b4,e3,45,00,de,92,45,e0,66,55,99,62,e4,6f,30,09,06,05,2b,0e,03,02,1d,05,00,03,82,01,01,00,b3,6c,de,4c,64,69,f1,e1,04,75,32,7a,f4,00,42,3d,0d,8b,41,b5,51,ac,7a,ba,60,8f,c9,ca,f6,35,72,91,2c,fc,78,82,2d,f4,57,36,b7,18,9e,00,68,7b,a5,90,3d,5f,cc,a8,46,5c,ce,e7,40,0a,4a,bc,71,1c,1d,91,9d,df,cf,6d,41,0c,b6,61,cd,34,56,23,d2,e3,f6,2e,07,58,2d,77,9d,f0,d3,73,5b,85,55,e8,38,d0,e8,77,43,7e,a2,c0,d8,3a,e9,ed,09,e2,63,0e,93,30,8c,40,aa,db,53,c8,44,f1,97,42,cf,e6,60,30,47,19,37,a4,0c,89,d4,16,ed,8a,6d,52,94,32,52,59,ed,40,c6,45,e7,3a,dd,67,13,38,ee,e9,9d,fb,0a,77,db,6b,4e,97,b5,ca,35,2a,26,81,f0,b9,2e,d1,d5,54,ad,57,80,f9,18,a2,29,a6,bf,74,96,4e,5a,3c,0e,9a,00,63,28,81,db,df,da,94,f4,5d,8f,ba,60,87,e0,f7,7f,21,55,91,52,fc,e0,55,de,1c,2d,bd,ab,f2,52,77,8d,79,ee,1a,cf,5d,29,21,67,9a,80,18,a1,14,5c,c4,b9,b1,ba,93,9a,53,9a,5e,63,91,8c,6b,a2,bf,04,02,68,46,de,21
[HKEY_LOCAL_MACHINECommSecuritySystemCertificatesPrivileged Execution Trust AuthoritiesCertificatesD4FB8924CFBA6C9C67360E7D6512FFDE99D2D283]
“Blob”=hex:19,00,00,00,01,00,00,00,10,00,00,00,8b,aa,6b,8c,39,c0,e4,b0,c1,96,6b,0d,22,b7,0b,85,04,00,00,00,01,00,00,00,10,00,00,00,95,1c,44,fc,10,9a,b0,6a,eb,bb,35,37,fe,d6,8b,06,03,00,00,00,01,00,00,00,14,00,00,00,d4,fb,89,24,cf,ba,6c,9c,67,36,0e,7d,65,12,ff,de,99,d2,d2,83,14,00,00,00,01,00,00,00,14,00,00,00,af,3e,7b,8b,dd,22,ef,28,87,be,e8,3e,67,b2,29,1e,64,62,76,77,20,00,00,00,01,00,00,00,a4,03,00,00,30,82,03,a0,30,82,02,8c,a0,03,02,01,02,02,10,f2,0c,b6,e5,5c,93,35,ac,4a,4d,8f,81,90,80,17,b1,30,09,06,05,2b,0e,03,02,1d,05,00,30,48,31,46,30,44,06,03,55,04,03,13,3d,54,45,53,54,20,55,53,45,20,4f,4e,4c,59,20,2d,20,53,61,6d,70,6c,65,20,50,72,69,76,69,6c,65,67,65,64,20,52,6f,6f,74,20,66,6f,72,20,57,69,6e,64,6f,77,73,20,4d,6f,62,69,6c,65,20,53,44,4b,30,1e,17,0d,30,34,31,31,30,35,30,30,30,36,34,32,5a,17,0d,30,39,31,32,33,31,30,38,30,30,30,30,5a,30,48,31,46,30,44,06,03,55,04,03,13,3d,54,45,53,54,20,55,53,45,20,4f,4e,4c,59,20,2d,20,53,61,6d,70,6c,65,20,50,72,69,76,69,6c,65,67,65,64,20,52,6f,6f,74,20,66,6f,72,20,57,69,6e,64,6f,77,73,20,4d,6f,62,69,6c,65,20,53,44,4b,30,82,01,22,30,0d,06,09,2a,86,48,86,f7,0d,01,01,01,05,00,03,82,01,0f,00,30,82,01,0a,02,82,01,01,00,c9,34,4f,83,0d,c3,07,0c,ed,46,5b,44,b0,cc,0f,39,b2,51,23,f3,4c,c1,cc,ff,ed,fd,35,1e,5b,87,a5,0c,7e,2d,ca,91,d7,47,4b,66,fc,0e,5f,75,06,a6,b3,99,7a,86,d2,45,89,3d,f4,e6,b4,c6,21,6e,5d,75,5f,f9,70,28,13,27,1d,6f,58,63,b8,53,bf,2f,ba,36,7b,fc,5f,a9,7e,85,2c,10,95,b6,5e,fd,7a,45,d4,6e,3f,b0,c8,42,99,64,10,5f,b0,55,28,41,f4,23,d1,08,3b,b1,e4,a9,0f,e6,16,8d,02,7b,70,ba,cc,2f,23,0d,64,7a,c1,60,45,ff,27,cf,aa,3d,1e,4f,09,3e,f3,3b,4a,a5,7e,63,a3,bf,20,42,75,bd,71,dc,5c,42,65,9a,d2,54,dd,53,24,37,66,db,ee,a0,50,31,1f,f7,d9,d9,1c,4f,f5,e4,0d,6e,3b,05,96,45,bd,7a,f8,c9,f6,06,4f,20,bd,e9,fc,95,f9,50,d6,87,1c,fb,f0,17,85,37,e3,2a,a3,71,02,97,fc,30,f1,12,8e,47,1f,e7,e4,4a,64,b9,67,63,1d,2c,81,39,91,ec,ec,fb,64,f3,b8,a3,1e,e2,83,36,8f,27,ad,d0,7e,19,6e,7c,d8,4c,78,6d,a9,c5,02,03,01,00,01,a3,81,8d,30,81,8a,30,0d,06,03,55,1d,0a,04,06,30,04,03,02,07,80,30,79,06,03,55,1d,01,04,72,30,70,80,10,55,cd,f5,d5,f3,4e,94,62,60,d1,6d,ac,be,32,fb,98,a1,4a,30,48,31,46,30,44,06,03,55,04,03,13,3d,54,45,53,54,20,55,53,45,20,4f,4e,4c,59,20,2d,20,53,61,6d,70,6c,65,20,50,72,69,76,69,6c,65,67,65,64,20,52,6f,6f,74,20,66,6f,72,20,57,69,6e,64,6f,77,73,20,4d,6f,62,69,6c,65,20,53,44,4b,82,10,f2,0c,b6,e5,5c,93,35,ac,4a,4d,8f,81,90,80,17,b1,30,09,06,05,2b,0e,03,02,1d,05,00,03,82,01,01,00,2e,77,ab,dc,56,01,d9,5b,c8,84,2c,00,92,b9,3a,b3,2a,32,67,b5,70,0d,c4,1f,e0,33,61,8f,c4,d1,2e,c1,2b,cb,16,73,9a,d1,4a,8b,4e,72,32,10,3f,eb,8a,ee,93,13,bc,1c,c2,a6,1a,29,a8,9b,85,e4,dd,91,27,c6,43,9b,a0,e4,20,71,f8,81,6b,66,08,82,98,80,b6,14,28,8a,23,15,e3,5c,1e,e7,16,0a,b8,6c,53,aa,8b,6f,f7,8e,8e,0d,bf,32,71,8f,c5,ab,30,9a,fc,e5,ac,ab,6c,c8,3b,66,51,e7,01,fc,fe,c5,c7,62,9a,f7,e1,7c,c2,a8,c0,e9,87,94,9d,7d,3f,43,16,6c,5b,21,e4,af,02,a6,3a,c3,b6,1f,fd,b4,15,2d,8c,cc,ce,1f,64,8c,94,3a,be,9e,31,ab,e3,83,70,d7,ef,42,56,24,b8,34,0a,44,03,f2,39,c7,c6,27,92,85,d3,85,da,87,86,85,bc,e8,06,34,37,1f,80,b6,b2,df,d4,80,08,7f,40,dd,77,fa,95,81,01,e3,b5,76,6b,dd,fa,bc,de,2e,02,35,bf,a4,cf,37,26,a6,de,77,4a,25,fb,53,00,fd,5f,c4,d1,5f,0d,f3,71,1b,a5,b3,98,23,fb,bc,0d,12,50,b1
当时偷懒就只导出了这两个,好像已经够用了,呵呵
在我们的 default.rgu 里加入这两段,然后编译成 hv 文件覆盖已有的 default.hv,这样我们的证书就加好了
2)签名并加入文件
加好数字证书,我们剩下的工作就非常简单了,以梅花p51为例:
首先用 WinCE CAB Manager 打开梅花p51的 cab 安装包,查看注册表项目,我们发现梅花对注册表的修改只有 HKCR 下面的内容,选定 HKCR,在文件菜单中选择导出,然后把导出文件的内容复制到我们的 default.rgu 里(上面提到过HKCR 和 HKLM 存放在 default.hv 而 HKCU 存放在 user.hv),注意检查一下新添加的内容,因为有的程序注册表信息会引用的某些文件,而这些文件的路径会在注册表中指定,例如梅花p51中 InprocServer32 会指定文件在 %CE2%PlumSIP4PlumSIP.dll,其中的%CE2%是无法被系统所识别的,它在安装的时候会被替换为系统所在的文件夹,即 Windows,所以这里我们必须修改为 %CWindowsPlumSIP4PlumSIP.dll,在注册表里的文件路径中 都必须被 来代替,ok,现在重新编译成 hv 文件,覆盖default.hv。

注册表修改好了就该加入文件了,把文件项目里的所有文件提取到 dump 文件夹下,按照前面将的,如果要将梅花设置成默认输入法则必须对它进行数字签名,我们的签名对象是 dll 和 exe 文件,对于梅花来讲,只有 PlumSIP.dll:
运行 signcode,第一步选择我们的目标文件 PlumSIP.dll,然后下一步,第二步选择签名方式,选择 Custom,第三步选择数字证书,单击 Select from file,找到我们的 SDKSamplePrivDeveloper.spc 文件,然后是选择 Private Key,单击 Browse,找到我们的 SDKSamplePrivDeveloper.pvk 文件,一直点下一步,直到提示签名成功。
ok,现在已经完成大半了,不过有的程序可能会限制安装的目录,比如梅花p51就限定在windows下的plumsip4这样的文件夹下,并且程序本身也有一定的文件夹结构,这个从 WinCE CAB Manager 可以看到,选中文件后,在右侧会有文件的路径等信息,前面讲过,%CE2%即 Windows,整理一下:
ch.ini WindowsPlumSIP4
ch.plum WindowsPlumSIP4
index.ini WindowsPlumSIP4user
PlumSIP.dll WindowsPlumSIP4
PlumSIPhelp.htm Windows
sp.ini WindowsPlumSIP4
记得前面讲的么?系统的文件夹结构都是指定在 initflashfiles.dat 文件中,用 ultra editor 打开 initflashfiles.dat,这是一个隐藏的系统文件,所以修改之前要去掉系统、只读、隐藏三个属性,同时注意,它和 default.rgu 一样,必须是 unicode 并且是 dos 换行符的,它的内容很简单,稍微看一下就直到它的写法了,按照上面整理的路径,加入如下几行:
Directory(“WindowsPlumSIP4”):-File(“ch.ini”,“Windowsch.ini”)
Directory(“WindowsPlumSIP4”):-File(“ch.plum”,“Windowsch.plum”)
Directory(“WindowsPlumSIP4user”):-File(“index.ini”,“Windowsindex.ini”)
Directory(“WindowsPlumSIP4”):-File(“PlumSIP.dll”,“WindowsPlumSIP.dll”)
Directory(“WindowsPlumSIP4”):-File(“sp.ini”,“Windowssp.ini”)
Directory用来指定文件夹,而file所对应的是文件名以及文件存在的真是路径,plumsiphelp.htm存放在windows下,所以不需要指定。
OK,现在梅花p51已经加入我们的系统了,重建我们的rom,然后刷机看看结果吧
六、后
大概就是这么多了,时间比较仓促,可能整理的比较混乱,有什么不清楚的地方还请大家多多包含,有什么问题的话尽可以找我讨论,联系我可以加我 MSN:linghua.zhang@msn.com ,不过回复最快的是在我的 blog 里留言 http://blog.waynezhang.com
忘了工具的下载地址:romkitchen.rar
wayne zhang
2006.9.24
http://www.waynezhang.com
d900 支持中文的 aku3.2 rom
本来不想在 blog 上再放这些的,就发到 pdafans 上了,结果答应一个朋友放个英文键盘的rom,结果一下午都上不了 pdafans,周末回去也没有网上……就先放这里吧,但愿有人能看到,免得在坛子上被骂,呵呵
本rom是基于 aku 3.2 beta8 修改的,借用了 8.26 简体 rom 的 tahoma 字体,但是不喜欢里面的英文字体,所以对字体文件进行了修改,加入了 STHeiti (苹果 mac 标准中文字体)中的英文(中文替换比较麻烦,况且雅黑也不错,就不改了)
彩信可以用我后面给的彩信包,很方便
输入法加入了微软拼音,并设为默认输入法,其他输入法都禁掉了,不过文件没有删除,以保证稳定性
区域文件加好了,默认为 China RPC
试验性的加入了 Spb Backup
先这么多吧,地址:
英文键盘:
http://blog.waynezhang.com/downloads/rom/d900/en/ekey.zip
德文键盘:
http://blog.waynezhang.com/downloads/rom/d900/en/tkey.zip彩信:
http://blog.waynezhang.com/downloads/rom/d900/others/mms1.cab
http://blog.waynezhang.com/downloads/rom/d900/others/mms2.cab
D900 空白 Extend Rom 下载
D900 扩展rom,各发行厂商用以放置定制软件(硬起后自动安装)的地方,部分T版的会装一些T-mobile的软件,导致部分界面变为德文,清空Extend Rom即可,在此提供空白extend rom,也可用来自我定制
ROM:Extend
下载: