定制ROM入门(含软件)

杨海伟

普通会员
2005-06-26
136
0
0
想要修改ROM真的比较麻烦,光软件就要装好几个.
1、BIN转换NBF格式

[ActivePerl-5.8.7.813.zip]、[NbfUtils.rar]、[typhoonnbfdecode.pl.rar]

2、提取ROM中的文件

[dumpromxSDA.zip]

3、修改CE注册表default.fdf

[romtools.rar]

提供下载

[ActivePerl 5.8.7] http://www.jar.com.cn/upload/ActivePerl-5.8.7.813.zip
[NbfUtils.rar] http://www.jar.com.cn/upload/NbfUtils.rar
[typhoonnbfdecode.pl.rar] http://www.jar.com.cn/upload/typhoonnbfdecode.pl.rar
[dumpromxSDA.zip] http://www.jar.com.cn/upload/dumpromxSDA.zip
[romtools.rar] http://www.jar.com.cn/upload/romtools.rar
装好软件,把[dumpromxSDA.zip]、 [romtools.rar]的文件解压到一个目录中《turnROM》,主要工作就是在这个目录中操作,主要使用的工具就是:dumpromx.exe、typhoonnbfdecode.pl、fdf2reg.pl、reg2fdf.pl四个,其他的可以不要.

开始吧!
1、在turnROM目录新建一个文本文件,打开输入cmd,保存退出。改名为dos.bat(需要闭关资源管理器“隐藏已知类型文件的扩展名”选项),这是进入DOS命令窗口的快捷(命令批处理)。双击运行dos.bat,进入DOS命令窗口,应该当前目录就是turnROM.
2、测试ROM文件为BIN格式,文件名为:ROM.BIN
  命令:perl typhoonnbfdecode.pl -x rom.bin
  会得到五个nb文件
  命令:ren 04e3d4c0-OS.nb OS.nb
  会得到OS.NB

直接使用NBF格式的ROM,要使用TyphoonNBFTools(就是降级SPL1010064的工具),打开ROM.NBF,在下半个窗口的OS上点右键,选择dump decrypted,在打开的窗口中输入文件名OS,保存,过一会儿,得到OS.N_D
OS.NB与OS.N_D两个文件完全一样,都是OS的镜象文件,以下文件名以OS.NB为例.

3、提取ROM文件
3.1 提取ROM的全部文件
  命令:md ROM
  命令:dumpromx os.nb -d rom
  建立一个ROM目录,将ROM(OS.NB)的文件全部放入ROM目录中
3.2 提取ROM的单个文件,文件例(注册表文件):default.fdf
  命令:md temp
  命令:dumpromx os.nb -d temp -f default.fdf
  建立TEMP目录,提取的default.fdf放在TEMP目录中.
  需要指出的是,ROM的文件排列格式比较复杂,还没有完全搞清楚。用全部提取文件的话,得到的都是完全组合好的文件,也就是手机RAM中的文件,但要想写回ROM中的话,有好多文件(特别是.exe/.dll文件)需要单个提取。。。
  命令:dumpromx os.nb -d temp -f keybddr.dll
  得到键盘驱动库keybddr.dll,分为四个文件(keybddr.dll.0/keybddr.dll.1/keybddr.dll.2/keybddr.dll.eo),keybddr.dll是完整文件,对写回ROM无用.

4、将文件写回ROM,例ROM文件:OS2.NB(为了不同型号ROM替换文件)
4.1 多个文件写入ROM
  命令:md in
  建立一个IN目录,将需要写回的所有文件复制进IN目录(只能是小文件,目前还不能确定有哪些,不过提取出来后只有单个部分的文件,应该没问题)
  命令:dumpromx os2.nb -a in
  得到in.nb
4.2 单个文件写入ROM
  把需要写入ROM的文件放到turnrom目录,如(keybddr.dll.0/keybddr.dll.1/keybddr.dll.2/keybddr.dll.eo)
  命令:dumpromx os2.nb -f keybddr.dll -f keybddr.dll
  得到keybddr.dll.nb
  (每个文件写入,命令行都会返回如:
    ERROR: could not find pointer for ofs 80085864
    ERROR: could not find pointer for ofs 00000000
   之类的信息,不用理会,这只是ROM文件与dumpromx程序不太配套造成的(dumpromx不是官方程序),并不是出错,成生的NB文件没有问题的.
   有许多.exe/.dll文件好象格式比较复杂,无法写回,命令行会返回如:
   Warning! ROM OV7648.dll.1 realaddr = 01f6c000 but ov7648.dll.1 realaddr = 01f6b000
   Warning! ROM OV7648.dll.2 realaddr = 03b05000 but ov7648.dll.2 realaddr = 03b08000
   之类的警告信息
   或者干脆出来一大堆信息,那就是说写入失败,虽然最后也得到了NB文件,绝对不能使用的。。。)

  新的ROM镜象生成,统一命名为:NEW.NB.

5、转换为NBF文件写入手机
  命令:perl typhoonnbfdecode.pl -r os=new.nb -c new.nbf
  得到NEW.NBF
然后用把NEW.NBF复制到IU_SPL+PatchedRUU目录,用手机USB联机电脑的方法将NEW.NBF刷进手机,搞定
看看结果吧.

6、修改CE注册表default.fdf
  第3步已经提取了CE注册表文件default.fdf,现在利用
  命令:perl fdf2reg.pl default.fdf default.reg
  得到default.reg,这就是手机的注册表,好多默认的东东都在这里面,相信不用多讲,需要的就是耐心,慢慢把你需要修改的选项找出来.
  这里当然要小心了,改错了的话手机功能不齐都是有可能的.
  命令:perl reg2fdf.pl default.reg default.fdf
  得到default.fdf,改好后的注册表文件转换为CE注册表格式,可以写回ROM了.

目前学到的就是这些了,还有一个有用的东东,没有搞清楚呢。
initflashfiles.dat文件是RAM复制到手机\storage目录的文件列表库,用WORD以unicode格式打开,就可以看到内容,把不想要的文件行删除,最后保存为.TXT文本.
这个没有进行测试呢,要转换为.DAT格式的文件需要用到tounicode.c这个脚本(.pl文件都是脚本命令),应该是C语言吧,还没有找到呢.

关于RAM文件的删除,目前还没有找到方法,有人说把文件写为0字节,没什么用,文件是没了,可占用的空间还在,因为RAM是按内存位址写入的,如果要手工修改文件的位址的话,工作量太大了,而官方没有将工具提供出来,所以没办法.
个别文件的话只是有个想法,还没有写回测试,成功的话再具体写吧.
  命令:dumpromx os.nb -f
  得到ROM所有文件在ROM中位址信息,可能你无法在DOS窗口完全保存下来,但是是可以的。在DOS窗口的属性--布局--屏幕缓冲区大小,将宽度改为:255,高度改为:9999,保存属性-供以后相同窗体使用。然后输入cls,再输入以上命令,显示完成后点鼠标右键--全选,再点鼠标右键,DOS窗口的内容已经复制到剪帖板,新建一个文本文件,打开,粘贴,就可以把所有的信息保存下来了.
  是供研究ROM内部文件结构使用的,大题来讲把一个分为文件名、文件结构表、文件内容,三部分,大的复杂的文件内容分为几部分,所以替换很困难,牵涉到位址的改变。不过这里提供了直接修改ROM文件的方法,需要研究一下ROM信息的位址信息,ROM分为五部分,就是开头的五行如img 01040000 : hdr=83156224 base=82040000 commandlineoffset=82040000这样,mg 01040000是内存实位址--在WINHEX中打开OS.nb就对应这个位址,base=82040000.
定位转换位址--定位的基点, hdr=83156224 是信息位址--文件信息中显示就是这种位址.
  在WINHEX中定位文件的位址,需要用十六进制计算,以寻找文件前面的hdr位址减去定位基点位址,就得到文件在WINHEX中的offest,即hdr-base=img,找到所寻找文件的所有信息,全部清零,这个文件就不存在了.
  只用此试过摄像头驱动程序的替换,不过未成功,考虑到摄像头驱动程序的复杂性,曾经测试七八种方法都未成功,可能与此无关,下一步再测试是否可以完全删除一个文件,不过又牵涉到ROM中还有文件的列表统计,不知有没有影响,慢慢来吧.
 

jimizhou

普通会员
2005-11-06
138
0
0
对楼主的定制ROM文章非常感兴趣,不知是定制WINCE2003的还是WINCE5.0的,多普达828+的ROM可用此方法定制么?另外有些问题不懂,楼主有何联系方式,想请教一下几个问题,谢谢!!!
 

yfhqj

普通会员
2009-04-10
11
0
0
顶礼!支持一下!
顶礼!支持一下!
顶礼!支持一下!