最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

诺基亚塞班系统固件DIY教程

IT圈 admin 40浏览 0评论

2024年1月28日发(作者:蔡如仪)

手机固件DIY详细教程

【端正心态篇】

在学习DIY固件之前,首先必须对刷机有所了解。当然,对电脑基本操作也要有一定的熟练度,连怎么复制、粘贴、搜索都不懂的话,还谈什么DIY固件呢?

测试DIY固件手机成砖,可以说是必经阶段。只要不对固件的重要核心部分进行修改,一般都不会出现救不回的问题。如果你担心手机频繁刷机后硬件损坏的

话,那么请放弃学习DIY固件。

【软件准备篇】

工欲善其事,必先利其器。下面这些软件都是在DIY固件中常用到的:

1、NaviFirmEx_v1_5_2诺基亚固件下载器.zip (882.22 KB)

2、CertClear去除固件校验软件.rar (10.54 KB)

3、NFE(1.0r9.93_20110613).rar (1.5 MB)

4、NFECore2(2.0r0.23_20110801).rar (834.16 KB)

5、WinHex十六进制编辑器.rar (1000.94 KB)

6、RESEdit_RES文件编辑器.rar (44.86 KB)(如果打不开,则安装 .n

et Framework 2.0)

7、SisContents173_sis解包打包器.zip (875.64 KB)

8、 (867.41 KB)

9、Nokia固件精简工具.rar (436.36 KB)

【认识固件篇】

打开诺基亚固件下载器“NaviFirmEx”,下载你手机对应的机型固件。我选择的是C5-03 (RM-697),版本20.0.24,CODE输入“China”进行筛选出中文的固件。

我选择的CODE是059C547,然后下载文件列表里面的全部文件。

一共是有7个文件:

RM-697_20.0.024_.C00

RM-697_20.0.024_2.V25

RM-697_20.0.024_C01_

RM697_011_

RM697_059C547_20.0.024_

RM697_059C547_20.0.024_

RM697_059C547_20.0.024_001_

文件名中含有core就是核心包,也就是第一个文件。核心包里面主要包括rom和rofs1,不要误以为核心包就是rom或者核心包就是rofs1。

文件名中含有rofs2就是语言包,也就是第二个文件。V25代表着该语言包是中国语言,肯定包含中文。

文件名中含有rofs3就是主题包,也就是第三个文件。凤舞霓裳版C5-03固件的凤舞霓裳主题就是在主题包里面的。

文件名中含有uda就是C盘文件包,也就是第四个文件。这里面的文件在刷机后会存在手机C盘里面。

vpl可以用记事本方式打开,里面记录的是每个文件对应的crc值以及一些信息。

dcp以及bin文件,我们不需要理解,知道有这样的文件就行。

刷机的时候,固件写入到手机的顺序先后是rom→rofs1→rofs2→rofs3→uda。

rom是不能修改的,但可以通过同名文件放在rofs里面进行覆盖。uda的修改已经没有意义,写入到C盘后硬格就会消失。

DIY固件主要是修改rofs1、rofs2、rofs3,修改之前必须先去除固件校验,否则刷机后不能正常开机。

【去除校验篇】

需要去除的固件校验有两个,一个是固件的总校验,另外一个是5D校验。固件的总校验是在核心包里面,5D校验是在语言包以及主题包里面。

去检验操作不需要用到十六进制来进行编辑,只需一个去除固件校验软件CertClear即可完成。

打开,把核心包RM-697_20.0.024_.C00直接拖到CertClear窗口里面,或者点击“浏览”来选择核心包。

然后点击“CORE去保护”,提示“所有操作完成”这样就把固件的总校验去除了。

接着把语言包RM-697_20.0.024_2.V25拖到窗口里面

点击“删首5D段”,提示“所有操作完成”,然后就多了个REP_RM-697_20.0.024_2.V25文件,这个是去除5D校验后的文件,不要弄错了。把原文件

RM-697_20.0.024_2.V25删掉,然后把

REP_RM-697_20.0.024_2.V25改名为RM-697_20.0.024_2.V25吧!

同理,用同样的方法去除主题包RM-697_20.0.024_C01_的5D校验。

【解包打包篇】

去除固件检验之后,就轮到主要软件NFE以及NFECore2上场了!

NFE是用于解包、打包语言包和主题包,NFECore2是用于解包、打包核心包,不要搞错了。

打开NFE_,把核心包RM-697_20.0.024_.C00直接拖到NFE_Core窗口里面。

不要忘记勾上“保持CRC32”,否则改变了CRC值后凤凰刷机软件会不认该固件文件报错不让刷机。

点击“解包”,会弹出窗口提示选择“是”

等待解包,解包完成后NFE_Core里面是有文字说明的“成功创建rofs目录”

来到NFE_的所在目录,可以找到rofs文件夹。

进入rofs文件夹,把、、feeds_view_删除

然后可以对里面的文件进行修改,至于怎么修改下面我会提到。修改过程中,不要关闭NFE_Core,并且要注意rofs文件夹的大小,不能超过规定的容量。容

量剩余量在NFE_Core窗口下是有显示的

当然,你也可以点击“ROFS容量调整”来扩大rofs的容量。

修改完之后,点击“打包”来给rofs文件夹打包,如果超过了容量它就会出现提示。

打包完成之后,来到NFE_的所在目录,可以找到Repack文件夹。

进入Repack文件夹,可以发现一个打包好的文件RBT_RM-697_20.0.024_.C00,把名字前面的RBT_删除,改名

为RM-697_20.0.024_.C00,把文件放在固件所在的刷机可识别到的路径下刷机即可。

语言包RM-697_20.0.024_2.V25以及主题包RM-697_20.0.024_C01_则用来解包打包,跟NFE_Core的使用方

法相同。注意别忘记勾上“重新打包时保持设定的CRC32”

另外要注意一点,即使不对某个包进行修改都好,最好也要用相应的软件解包然后打包,以免造成不必要的麻烦。

我曾经就有过这样的经历,没有对主题包进行修改。修改好语言包和核心包之后就刷机,然后就开机不了。检查了每个包,明明都去除了校验

却还发生开机

不了这个问题。纠结了很久,发现解包再打包没修改的主题包后再来刷机,问题就解决了。

【固件优化篇】

一、自启动进程优化

解包核心包后,在resource文件夹下可以找到以下三个文件:Starter_、starter_background_、starter_non_critical_

其中starter_background_主要包括系统后台可见进程,其他两个则是系统后台不可见进程。

用RESEdit_RES文件编辑器可以打开,并对其修改。

打开starter_background_文件之后,把z:等各项改为其他的不存在的名字就代表屏蔽,比如改为z:1

。当然,也可以改为存在的其他进程名字,固化一些需要添加自启动软件,就可以在这里添加。但是要注意,文件名字不能超过本身的长度。

改好之后,点击“应用”,然后点击“文件”选择“另存为”,直接在原路径保存确定替换即可。

一般地,可以通过屏蔽进程实现提高手机运存。但我觉得每个系统进程的存在必然有它们的所在意义,屏蔽了系统进程后会造成BUG,所以在我的固件里面一般是不会轻易屏蔽进程的。

二、10202be9优化

rofs2private10202be9文件夹下的txt文件修改优化,下面是我做固件时笔记所写的内容:

1、禁止格机后发短息注册,默认语言选项设置为中文,欢迎画面未禁止

0x4 string "Language=100; Promo=100; PAplugin=100;Switch=001; Personalisation=001;

EmailSettings=000;10281c96;2001FE2F"

改为

0x4 string "Language=000; Promo=100; PAplugin=000;Switch=001; Personalisation=001;

EmailSettings=000;10281c96;2001FE2F"

2、修改信息存储条数默认为999条

0x1 int 100 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 999 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

3、修改短信默认支持全部字符

0x8 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x8 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

4、修改默认关闭服务信息

0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=WriteDeviceData

改为

0x1 int 0 16777216 cap_rd=ReadDeviceData cap_wr=WriteDeviceData

5、添加网络标志开关

0x4 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x4 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

6、修改键盘自动锁时间默认为30秒

0x5 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x5 int 30 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

7、修改闹钟重响时间默认为5分钟

0x2 int 15 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x2 int 5 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

8、禁止C盘private下的102072C4文件夹生成5M内存的reserved文件

0x1 int 5000000 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

9、修改缓存目录为E盘

0x1 string "C:" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 string "E:" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

10、修改音乐播放器扫描路径为内存卡Music文件夹

0x1 string "C:DATA|E:" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string

"C:datadownload|E:datadownload|F:datadownload|C:datasoundsdigital|E:soundsdigital|E:

download|F:soundsdigital|F:download" 0 cap_rd=alwayspass

cap_wr=alwaysfail

改为

0x1 string "E:music" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "E:music" 0 cap_rd=alwayspass cap_wr=alwaysfail

11、修改自带浏览器支持断点续传

0x5 int 0 0 cap_wr=WriteDeviceData

改为

0x5 int 1 0 cap_wr=WriteDeviceData

12、修改相机关闭后不再停驻后台服务

0x2 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x2 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

13、修改电子邮件通知的可见性默认为关闭并且不显示电子邮件

0x4 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x5 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x4 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x5 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

14、修改录音最长时间为12小时

0x7 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x7 int 720 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 int 720 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

15、修改录音机录音默认存放路径为内存卡

0x3 int 2 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x3 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

16、修改感应设置默认关闭

0x1 int 1 0 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData

17、修改屏幕背光亮度为40和时间30秒

0x1 int 70 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x6 int 45 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 40 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x6 int 30 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

18、修改默认开机时间为2011年7月24日

0x16 string "20110400:090000" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x16 string "20110623:120000" 0 cap_rd=alwayspass cap_wr=alwaysfail

19、禁止安装时弹出不受信任的软件供应商提示

0x4 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x4 int 1 0 cap_rd=alwayspass cap_wr=alwaysfail

20、修改自带输入法默认关闭预想输入

0x7 int 1 16777216 cap_rd=alwayspass cap_wr=alwayspass

改为

0x7 int 0 16777216 cap_rd=alwayspass cap_wr=alwayspass

21、修改完全退出信息、通讯记录、日历、时钟、通讯录

0x1 int 268458181 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 int 270486741 0 cap_rd=alwayspass cap_wr=alwaysfail

0x3 int 268458241 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 int 268458243 0 cap_rd=alwayspass cap_wr=alwaysfail

0x5 int 270486734 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x3 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x5 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

22、屏蔽多媒体搜索目录

0x1 string "activenotes;" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 string "System;Temp;

Private;sys;resource;activenotes;OthersContacts;Cities;" 0

cap_rd=alwayspass cap_wr=alwaysfail

在""里面加入需要屏蔽的搜索路径

23、开启*#92702689#查询总通话时间功能

0x1 int 805589024 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 805589152 0 cap_rd=alwayspass cap_wr=alwaysfail

24、修改自带浏览器缓存文件夹路径为E盘

0x3 string "c:systemcache" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "c:systemcacheop" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x8 string "c:systemcachevss" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x3 string "e:systemcache" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "e:systemcacheop" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x8 string "e:systemcachevss" 0 cap_rd=alwayspass cap_wr=alwaysfail

25、修改默认主题元素为青草主题

0x2 string "537014058" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 string "20022F2A" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x2 string "537014057" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 string "20022F29" 0 cap_rd=alwayspass cap_wr=alwaysfail

说明:537014058转化为十六进制就为20022F2A。20022F29是青草主题,20022F2A是黑色主题,20022f2b是白色主题

26、修改惯性滑动速度

0x1 int 8 0 cap_rd=alwayspass cap_wr=alwayspass

0x2 int 10 0 cap_rd=alwayspass cap_wr=alwayspass

改为

0x1 int 5 0 cap_rd=alwayspass cap_wr=alwayspass

5 0为滑动速度的控制,越小越快,看上去会更流畅一点,但是如果是“0”,则会是opera一样的那种即托即放的滚动效果

0x2 int 8 0 cap_rd=alwayspass cap_wr=alwayspass

8 0为滑动摩擦力的大小,越大表示摩擦力越大,即放开后会越快停止滑动,如果为“0”,除非滑倒顶或者滑倒底,否则不会停止,也就是所谓的无摩擦惯

性滑动

27、修改挂机键不关闭java软件、OVI地图

0x1 string "*" 0 cap_rd=alwayspass cap_wr=alwaysfail

说明:*指的是通配符!这行的意思是红键能够退出所有系统程序以及java程序。之前我修改的就直接把*去掉,造成了红键不能退出系统程序。

解决方法:把系统程序的UID写进去,多个程序之间用空格隔开(这个研究了n久才想到用空格),比如:

0x1 string "10005901 102818E7 101F8543 101F4D90 101f8599 10005903 101f857a

101f84eb 101f4cce 10005a32 101f6de5 101f4cd5 100058c5 100058ec" 0

cap_rd=alwayspass cap_wr=alwaysfail

28、关闭键盘灯

0x4 int 243 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x4 int 241 0 cap_rd=alwayspass cap_wr=alwaysfail

29、修改开关机画面声音

0x2 int 4 0 cap_rd=alwayspass cap_wr=alwaysfail

4 0为开机音量,可以改为0 0 到9 9。

0x3 string "z:dataStartup_" 0 cap_rd=alwayspass cap_wr=alwaysfail

z:dataStartup_是开机声音

0xD string "z:" 0 cap_rd=alwayspass cap_wr=alwaysfail

z:是开机画面

0x12 string "" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x12这行定义的是关机画面,可以改为0x12 string "z:resourceappsShutdown "

0 cap_rd=alwayspass cap_wr=alwaysfail

0x14 string "" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x14这行定义的是关机声音,可以改为0x14 string

"z:resourceappsShutdown_3" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x15 int 4 0 cap_rd=alwayspass cap_wr=alwaysfail

4 0为关机音量,可以改为0 0到9 9。

【固件精简篇】

固件精简就是删除一些自带的程序,删除的方法有两种:0k文件覆盖法;直接删除法。

rom里面含有的文件可以利用0k文件覆盖法来删除,因为rom是不能直接修改的。rofs里面的就用直接删除法删除即可,当然也可以借助一些软件来删除。

这里我介绍一下用Nokia固件精简工具来删除自带程序:

打开Nokia FW Cleaner 3.0 beta ,会提示你选择路径

选择好固件解包的rofs路径后,点击ok

把你需要删除的项目勾上,然后点击“+”,接着点击“X”即可删除。

当然,里面有备份以及还原功能,善于使用备份以防误删文件造成bug。

有时候,删除了一些项目后会刷机会出现提示系统错误,这时应该考虑下是否需要屏蔽进程。如:删除了欢迎,那么就要在Starter_里面屏蔽。

删除文件可能删除不太干净,会有图标残留。这时可以通过隐藏图标,把删除文件后的残留图标给去掉。

隐藏图标的方法有两种:

1、在里面添加屏蔽图标

0x8 string "10008d5e" 16777216 cap_rd=alwayspass

cap_wr=WriteDeviceData

把需要隐藏的图标UID添加进引号里面即可,用英文状态下的逗号隔开。这里是一些系统,可以参考一下。

2、在里面把不需要显示的图标移到菜单外面

以记事本方式打开菜单布局文件,

short_name="&qtn_fldr_root_level;">表示菜单栏的开始,表示“日历图标”,是注释来的,“日历”的意思。

想要隐藏日历,则把放到菜单栏的上面即可。

官方C5-03固件里面有两个计算器的原因就是在这里,

菜单布局文件出现了两个计算器,删除其中一个即可。

下面是我做固件时的用直接删除法做的笔记:

1、删除英文

搜索.r159删除,并删除resourcexhtml159,并且修改,把内容里面的159删除。

2、删除MY NOKIA

搜索reply、SmartPromoUi删除

3、删除播客

删除npoda_,并且在private1028190B下文件中修改int 246 改为int 206

4、删除OVI音乐

搜索MusicStore删除

5、删除OVI商店

搜索ovistore删除

6、删除帮助

搜索cshelp删除,并删除resourcexhtml。并且用winhex打开所有r31文件,搜索“2E5EA952”替换为“FFFFFFFF00022E5EA952”以及搜索“AB2E5EA952”替换为“FFFFFFFF02AB2E5EA952”,还要用拖拽文件操作-V2[1].0-完整版-BY-汉化xx子.rar (706.28 KB)脱壳之后,再用winhex搜索“F4030000”替换为“00000000”。至此,“帮助”选项残留已彻底删除。

7、删除视频中心

搜索iptvappui、videocenter删除

8、删除单位换算

搜索converter删除

9、删除设置向导和手机设置

搜索SettingWizard、SetWiz删除,private10281c96backup_

10、删除在线共享

搜索shareonline、ShareOnOviMtm删除

11、删除自带书签

删除里面的内容

12、删除手机转移

搜索switch删除

13、删除附件设置

搜索cfmweca删除

14、删除MailForExchange

搜索MailForExchange删除

15、删除系统主题

20022F2A是黑色主题,20022f2b是白色主题

删除resourceskins20022F2A

删除resourceskins20022f2b

删除private10207114import20022F2A

删除private10207114import20022f2b

【软件固化篇】

用sis解包打包器SisContents可以解包sis、sisx格式的软件,放在rofs文件夹里面就可以实现软件固化。

打开

把需要固化的软件拖到SisContents窗口里面,点击解包

解包之后会自动打开文件夹,复制文件夹到固件rofs里面即可。(注意不要把pkg也复制过去了,另外如果文件夹显示C_开头,请将前面的C_删除。)

一般地,这样可以固化一些不需要开机启动的软件。如果需要开机启动的软件,则需要手动添加开机启动项,怎么添加请看上面【固件优化篇】里面的自启

动进程优化。另外还有一些比较特殊的软件是不能直接这样固化的,需要经过修改。至于修改的方法我这里不作讨论,一般地需要修改才能固化的软件都会

有相应的固化素材。

【C盘扩容篇】

必须先了解相关概念以及扩容原理和原始方法,请看我的帖子CPU600机型固件扩大C盘空间容量详细教程

帖子里面讲述的是完全手动用十六进制修改,相当麻烦。下面我介绍的是用十六进制配合NFX0630修改,操作相对简单。

首先打开WinHex十六进制编辑器,把核心包RM-697_20.0.024_.C00拖到WinHex里面打开。

找到Z盘与C盘的分区,注意框住部分就是要用十六进制修改的部分

数据计算:

rofs:07 4A 00 00 = 116.625MB

user:04 F4 00 00 = 79.25MB,实际C盘为75.4MB

rofs+user=0C 3E 00 00

想要修改的数据为:

rofs: 04 D0 00 00 = 77MB(这个是想要修改为多少就多少,只要在可行的rofs+user范围内。)

user: 07 6E 00 00 = 118.875MB(实际C盘为114.3MB,会被吃掉4到8MB的容量,原因未知。)

确定红色框里面的分区数据大小:rofs:07 4A 00 00改为04 D0 00 00,user:04 F4 00 00改为07 6E 00 00。

通过计算user起始地址:02 EA 00 00 + 04 D0 00 00 =07 BA 00 00,那么蓝色框的值就改为07 BA 00 00。

并且计算RF总值:07 BA 00 00 - 1 = 07 B9 FF FF,那么绿色框的值就改为07 B9 FF FF。

修改好之后保存,退出WinHex。然后打开NFX,把改好的核心包直接

拖到NFX里面。

双击“打开固件”的右边一点点,如上图的红框位置。看到rofs1、rofs2、rofs3、user的分区信息

根据Z盘容量为04 D0 00 00和C盘容量为07 6E 00 00,计算你要调整rofs1、rofs2、rofs3的值和user的值。我改的数据如下:

修改了rofs1则点击一下rofs1对应的“修改”,就会完成修改rofs1。

修改了rofs2则点击一下rofs2对应的“修改”,这时会弹出一个框让你选择对应的rofs2,选择相应的文件后即可打开。

同理rofs3和user也跟rofs2分区修改的操作一样,user对应的文件是uda文件。

修改好之后,crc值会发生变化,可以根据vpl文件的记录,把每个文件的crc值调整过来。

2024年1月28日发(作者:蔡如仪)

手机固件DIY详细教程

【端正心态篇】

在学习DIY固件之前,首先必须对刷机有所了解。当然,对电脑基本操作也要有一定的熟练度,连怎么复制、粘贴、搜索都不懂的话,还谈什么DIY固件呢?

测试DIY固件手机成砖,可以说是必经阶段。只要不对固件的重要核心部分进行修改,一般都不会出现救不回的问题。如果你担心手机频繁刷机后硬件损坏的

话,那么请放弃学习DIY固件。

【软件准备篇】

工欲善其事,必先利其器。下面这些软件都是在DIY固件中常用到的:

1、NaviFirmEx_v1_5_2诺基亚固件下载器.zip (882.22 KB)

2、CertClear去除固件校验软件.rar (10.54 KB)

3、NFE(1.0r9.93_20110613).rar (1.5 MB)

4、NFECore2(2.0r0.23_20110801).rar (834.16 KB)

5、WinHex十六进制编辑器.rar (1000.94 KB)

6、RESEdit_RES文件编辑器.rar (44.86 KB)(如果打不开,则安装 .n

et Framework 2.0)

7、SisContents173_sis解包打包器.zip (875.64 KB)

8、 (867.41 KB)

9、Nokia固件精简工具.rar (436.36 KB)

【认识固件篇】

打开诺基亚固件下载器“NaviFirmEx”,下载你手机对应的机型固件。我选择的是C5-03 (RM-697),版本20.0.24,CODE输入“China”进行筛选出中文的固件。

我选择的CODE是059C547,然后下载文件列表里面的全部文件。

一共是有7个文件:

RM-697_20.0.024_.C00

RM-697_20.0.024_2.V25

RM-697_20.0.024_C01_

RM697_011_

RM697_059C547_20.0.024_

RM697_059C547_20.0.024_

RM697_059C547_20.0.024_001_

文件名中含有core就是核心包,也就是第一个文件。核心包里面主要包括rom和rofs1,不要误以为核心包就是rom或者核心包就是rofs1。

文件名中含有rofs2就是语言包,也就是第二个文件。V25代表着该语言包是中国语言,肯定包含中文。

文件名中含有rofs3就是主题包,也就是第三个文件。凤舞霓裳版C5-03固件的凤舞霓裳主题就是在主题包里面的。

文件名中含有uda就是C盘文件包,也就是第四个文件。这里面的文件在刷机后会存在手机C盘里面。

vpl可以用记事本方式打开,里面记录的是每个文件对应的crc值以及一些信息。

dcp以及bin文件,我们不需要理解,知道有这样的文件就行。

刷机的时候,固件写入到手机的顺序先后是rom→rofs1→rofs2→rofs3→uda。

rom是不能修改的,但可以通过同名文件放在rofs里面进行覆盖。uda的修改已经没有意义,写入到C盘后硬格就会消失。

DIY固件主要是修改rofs1、rofs2、rofs3,修改之前必须先去除固件校验,否则刷机后不能正常开机。

【去除校验篇】

需要去除的固件校验有两个,一个是固件的总校验,另外一个是5D校验。固件的总校验是在核心包里面,5D校验是在语言包以及主题包里面。

去检验操作不需要用到十六进制来进行编辑,只需一个去除固件校验软件CertClear即可完成。

打开,把核心包RM-697_20.0.024_.C00直接拖到CertClear窗口里面,或者点击“浏览”来选择核心包。

然后点击“CORE去保护”,提示“所有操作完成”这样就把固件的总校验去除了。

接着把语言包RM-697_20.0.024_2.V25拖到窗口里面

点击“删首5D段”,提示“所有操作完成”,然后就多了个REP_RM-697_20.0.024_2.V25文件,这个是去除5D校验后的文件,不要弄错了。把原文件

RM-697_20.0.024_2.V25删掉,然后把

REP_RM-697_20.0.024_2.V25改名为RM-697_20.0.024_2.V25吧!

同理,用同样的方法去除主题包RM-697_20.0.024_C01_的5D校验。

【解包打包篇】

去除固件检验之后,就轮到主要软件NFE以及NFECore2上场了!

NFE是用于解包、打包语言包和主题包,NFECore2是用于解包、打包核心包,不要搞错了。

打开NFE_,把核心包RM-697_20.0.024_.C00直接拖到NFE_Core窗口里面。

不要忘记勾上“保持CRC32”,否则改变了CRC值后凤凰刷机软件会不认该固件文件报错不让刷机。

点击“解包”,会弹出窗口提示选择“是”

等待解包,解包完成后NFE_Core里面是有文字说明的“成功创建rofs目录”

来到NFE_的所在目录,可以找到rofs文件夹。

进入rofs文件夹,把、、feeds_view_删除

然后可以对里面的文件进行修改,至于怎么修改下面我会提到。修改过程中,不要关闭NFE_Core,并且要注意rofs文件夹的大小,不能超过规定的容量。容

量剩余量在NFE_Core窗口下是有显示的

当然,你也可以点击“ROFS容量调整”来扩大rofs的容量。

修改完之后,点击“打包”来给rofs文件夹打包,如果超过了容量它就会出现提示。

打包完成之后,来到NFE_的所在目录,可以找到Repack文件夹。

进入Repack文件夹,可以发现一个打包好的文件RBT_RM-697_20.0.024_.C00,把名字前面的RBT_删除,改名

为RM-697_20.0.024_.C00,把文件放在固件所在的刷机可识别到的路径下刷机即可。

语言包RM-697_20.0.024_2.V25以及主题包RM-697_20.0.024_C01_则用来解包打包,跟NFE_Core的使用方

法相同。注意别忘记勾上“重新打包时保持设定的CRC32”

另外要注意一点,即使不对某个包进行修改都好,最好也要用相应的软件解包然后打包,以免造成不必要的麻烦。

我曾经就有过这样的经历,没有对主题包进行修改。修改好语言包和核心包之后就刷机,然后就开机不了。检查了每个包,明明都去除了校验

却还发生开机

不了这个问题。纠结了很久,发现解包再打包没修改的主题包后再来刷机,问题就解决了。

【固件优化篇】

一、自启动进程优化

解包核心包后,在resource文件夹下可以找到以下三个文件:Starter_、starter_background_、starter_non_critical_

其中starter_background_主要包括系统后台可见进程,其他两个则是系统后台不可见进程。

用RESEdit_RES文件编辑器可以打开,并对其修改。

打开starter_background_文件之后,把z:等各项改为其他的不存在的名字就代表屏蔽,比如改为z:1

。当然,也可以改为存在的其他进程名字,固化一些需要添加自启动软件,就可以在这里添加。但是要注意,文件名字不能超过本身的长度。

改好之后,点击“应用”,然后点击“文件”选择“另存为”,直接在原路径保存确定替换即可。

一般地,可以通过屏蔽进程实现提高手机运存。但我觉得每个系统进程的存在必然有它们的所在意义,屏蔽了系统进程后会造成BUG,所以在我的固件里面一般是不会轻易屏蔽进程的。

二、10202be9优化

rofs2private10202be9文件夹下的txt文件修改优化,下面是我做固件时笔记所写的内容:

1、禁止格机后发短息注册,默认语言选项设置为中文,欢迎画面未禁止

0x4 string "Language=100; Promo=100; PAplugin=100;Switch=001; Personalisation=001;

EmailSettings=000;10281c96;2001FE2F"

改为

0x4 string "Language=000; Promo=100; PAplugin=000;Switch=001; Personalisation=001;

EmailSettings=000;10281c96;2001FE2F"

2、修改信息存储条数默认为999条

0x1 int 100 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 999 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

3、修改短信默认支持全部字符

0x8 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x8 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

4、修改默认关闭服务信息

0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=WriteDeviceData

改为

0x1 int 0 16777216 cap_rd=ReadDeviceData cap_wr=WriteDeviceData

5、添加网络标志开关

0x4 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x4 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

6、修改键盘自动锁时间默认为30秒

0x5 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x5 int 30 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

7、修改闹钟重响时间默认为5分钟

0x2 int 15 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x2 int 5 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

8、禁止C盘private下的102072C4文件夹生成5M内存的reserved文件

0x1 int 5000000 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

9、修改缓存目录为E盘

0x1 string "C:" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 string "E:" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

10、修改音乐播放器扫描路径为内存卡Music文件夹

0x1 string "C:DATA|E:" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string

"C:datadownload|E:datadownload|F:datadownload|C:datasoundsdigital|E:soundsdigital|E:

download|F:soundsdigital|F:download" 0 cap_rd=alwayspass

cap_wr=alwaysfail

改为

0x1 string "E:music" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "E:music" 0 cap_rd=alwayspass cap_wr=alwaysfail

11、修改自带浏览器支持断点续传

0x5 int 0 0 cap_wr=WriteDeviceData

改为

0x5 int 1 0 cap_wr=WriteDeviceData

12、修改相机关闭后不再停驻后台服务

0x2 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x2 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

13、修改电子邮件通知的可见性默认为关闭并且不显示电子邮件

0x4 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x5 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x4 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x5 int 0 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

14、修改录音最长时间为12小时

0x7 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 int 60 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x7 int 720 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 int 720 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

15、修改录音机录音默认存放路径为内存卡

0x3 int 2 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x3 int 1 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

16、修改感应设置默认关闭

0x1 int 1 0 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=WriteDeviceData

17、修改屏幕背光亮度为40和时间30秒

0x1 int 70 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x6 int 45 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

改为

0x1 int 40 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x6 int 30 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

18、修改默认开机时间为2011年7月24日

0x16 string "20110400:090000" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x16 string "20110623:120000" 0 cap_rd=alwayspass cap_wr=alwaysfail

19、禁止安装时弹出不受信任的软件供应商提示

0x4 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x4 int 1 0 cap_rd=alwayspass cap_wr=alwaysfail

20、修改自带输入法默认关闭预想输入

0x7 int 1 16777216 cap_rd=alwayspass cap_wr=alwayspass

改为

0x7 int 0 16777216 cap_rd=alwayspass cap_wr=alwayspass

21、修改完全退出信息、通讯记录、日历、时钟、通讯录

0x1 int 268458181 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 int 270486741 0 cap_rd=alwayspass cap_wr=alwaysfail

0x3 int 268458241 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 int 268458243 0 cap_rd=alwayspass cap_wr=alwaysfail

0x5 int 270486734 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x3 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

0x5 int 0 0 cap_rd=alwayspass cap_wr=alwaysfail

22、屏蔽多媒体搜索目录

0x1 string "activenotes;" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x2 string "System;Temp;

Private;sys;resource;activenotes;OthersContacts;Cities;" 0

cap_rd=alwayspass cap_wr=alwaysfail

在""里面加入需要屏蔽的搜索路径

23、开启*#92702689#查询总通话时间功能

0x1 int 805589024 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x1 int 805589152 0 cap_rd=alwayspass cap_wr=alwaysfail

24、修改自带浏览器缓存文件夹路径为E盘

0x3 string "c:systemcache" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "c:systemcacheop" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x8 string "c:systemcachevss" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x3 string "e:systemcache" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x4 string "e:systemcacheop" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x8 string "e:systemcachevss" 0 cap_rd=alwayspass cap_wr=alwaysfail

25、修改默认主题元素为青草主题

0x2 string "537014058" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 string "20022F2A" 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x2 string "537014057" 16777216 cap_rd=alwayspass cap_wr=WriteDeviceData

0x14 string "20022F29" 0 cap_rd=alwayspass cap_wr=alwaysfail

说明:537014058转化为十六进制就为20022F2A。20022F29是青草主题,20022F2A是黑色主题,20022f2b是白色主题

26、修改惯性滑动速度

0x1 int 8 0 cap_rd=alwayspass cap_wr=alwayspass

0x2 int 10 0 cap_rd=alwayspass cap_wr=alwayspass

改为

0x1 int 5 0 cap_rd=alwayspass cap_wr=alwayspass

5 0为滑动速度的控制,越小越快,看上去会更流畅一点,但是如果是“0”,则会是opera一样的那种即托即放的滚动效果

0x2 int 8 0 cap_rd=alwayspass cap_wr=alwayspass

8 0为滑动摩擦力的大小,越大表示摩擦力越大,即放开后会越快停止滑动,如果为“0”,除非滑倒顶或者滑倒底,否则不会停止,也就是所谓的无摩擦惯

性滑动

27、修改挂机键不关闭java软件、OVI地图

0x1 string "*" 0 cap_rd=alwayspass cap_wr=alwaysfail

说明:*指的是通配符!这行的意思是红键能够退出所有系统程序以及java程序。之前我修改的就直接把*去掉,造成了红键不能退出系统程序。

解决方法:把系统程序的UID写进去,多个程序之间用空格隔开(这个研究了n久才想到用空格),比如:

0x1 string "10005901 102818E7 101F8543 101F4D90 101f8599 10005903 101f857a

101f84eb 101f4cce 10005a32 101f6de5 101f4cd5 100058c5 100058ec" 0

cap_rd=alwayspass cap_wr=alwaysfail

28、关闭键盘灯

0x4 int 243 0 cap_rd=alwayspass cap_wr=alwaysfail

改为

0x4 int 241 0 cap_rd=alwayspass cap_wr=alwaysfail

29、修改开关机画面声音

0x2 int 4 0 cap_rd=alwayspass cap_wr=alwaysfail

4 0为开机音量,可以改为0 0 到9 9。

0x3 string "z:dataStartup_" 0 cap_rd=alwayspass cap_wr=alwaysfail

z:dataStartup_是开机声音

0xD string "z:" 0 cap_rd=alwayspass cap_wr=alwaysfail

z:是开机画面

0x12 string "" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x12这行定义的是关机画面,可以改为0x12 string "z:resourceappsShutdown "

0 cap_rd=alwayspass cap_wr=alwaysfail

0x14 string "" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x14这行定义的是关机声音,可以改为0x14 string

"z:resourceappsShutdown_3" 0 cap_rd=alwayspass cap_wr=alwaysfail

0x15 int 4 0 cap_rd=alwayspass cap_wr=alwaysfail

4 0为关机音量,可以改为0 0到9 9。

【固件精简篇】

固件精简就是删除一些自带的程序,删除的方法有两种:0k文件覆盖法;直接删除法。

rom里面含有的文件可以利用0k文件覆盖法来删除,因为rom是不能直接修改的。rofs里面的就用直接删除法删除即可,当然也可以借助一些软件来删除。

这里我介绍一下用Nokia固件精简工具来删除自带程序:

打开Nokia FW Cleaner 3.0 beta ,会提示你选择路径

选择好固件解包的rofs路径后,点击ok

把你需要删除的项目勾上,然后点击“+”,接着点击“X”即可删除。

当然,里面有备份以及还原功能,善于使用备份以防误删文件造成bug。

有时候,删除了一些项目后会刷机会出现提示系统错误,这时应该考虑下是否需要屏蔽进程。如:删除了欢迎,那么就要在Starter_里面屏蔽。

删除文件可能删除不太干净,会有图标残留。这时可以通过隐藏图标,把删除文件后的残留图标给去掉。

隐藏图标的方法有两种:

1、在里面添加屏蔽图标

0x8 string "10008d5e" 16777216 cap_rd=alwayspass

cap_wr=WriteDeviceData

把需要隐藏的图标UID添加进引号里面即可,用英文状态下的逗号隔开。这里是一些系统,可以参考一下。

2、在里面把不需要显示的图标移到菜单外面

以记事本方式打开菜单布局文件,

short_name="&qtn_fldr_root_level;">表示菜单栏的开始,表示“日历图标”,是注释来的,“日历”的意思。

想要隐藏日历,则把放到菜单栏的上面即可。

官方C5-03固件里面有两个计算器的原因就是在这里,

菜单布局文件出现了两个计算器,删除其中一个即可。

下面是我做固件时的用直接删除法做的笔记:

1、删除英文

搜索.r159删除,并删除resourcexhtml159,并且修改,把内容里面的159删除。

2、删除MY NOKIA

搜索reply、SmartPromoUi删除

3、删除播客

删除npoda_,并且在private1028190B下文件中修改int 246 改为int 206

4、删除OVI音乐

搜索MusicStore删除

5、删除OVI商店

搜索ovistore删除

6、删除帮助

搜索cshelp删除,并删除resourcexhtml。并且用winhex打开所有r31文件,搜索“2E5EA952”替换为“FFFFFFFF00022E5EA952”以及搜索“AB2E5EA952”替换为“FFFFFFFF02AB2E5EA952”,还要用拖拽文件操作-V2[1].0-完整版-BY-汉化xx子.rar (706.28 KB)脱壳之后,再用winhex搜索“F4030000”替换为“00000000”。至此,“帮助”选项残留已彻底删除。

7、删除视频中心

搜索iptvappui、videocenter删除

8、删除单位换算

搜索converter删除

9、删除设置向导和手机设置

搜索SettingWizard、SetWiz删除,private10281c96backup_

10、删除在线共享

搜索shareonline、ShareOnOviMtm删除

11、删除自带书签

删除里面的内容

12、删除手机转移

搜索switch删除

13、删除附件设置

搜索cfmweca删除

14、删除MailForExchange

搜索MailForExchange删除

15、删除系统主题

20022F2A是黑色主题,20022f2b是白色主题

删除resourceskins20022F2A

删除resourceskins20022f2b

删除private10207114import20022F2A

删除private10207114import20022f2b

【软件固化篇】

用sis解包打包器SisContents可以解包sis、sisx格式的软件,放在rofs文件夹里面就可以实现软件固化。

打开

把需要固化的软件拖到SisContents窗口里面,点击解包

解包之后会自动打开文件夹,复制文件夹到固件rofs里面即可。(注意不要把pkg也复制过去了,另外如果文件夹显示C_开头,请将前面的C_删除。)

一般地,这样可以固化一些不需要开机启动的软件。如果需要开机启动的软件,则需要手动添加开机启动项,怎么添加请看上面【固件优化篇】里面的自启

动进程优化。另外还有一些比较特殊的软件是不能直接这样固化的,需要经过修改。至于修改的方法我这里不作讨论,一般地需要修改才能固化的软件都会

有相应的固化素材。

【C盘扩容篇】

必须先了解相关概念以及扩容原理和原始方法,请看我的帖子CPU600机型固件扩大C盘空间容量详细教程

帖子里面讲述的是完全手动用十六进制修改,相当麻烦。下面我介绍的是用十六进制配合NFX0630修改,操作相对简单。

首先打开WinHex十六进制编辑器,把核心包RM-697_20.0.024_.C00拖到WinHex里面打开。

找到Z盘与C盘的分区,注意框住部分就是要用十六进制修改的部分

数据计算:

rofs:07 4A 00 00 = 116.625MB

user:04 F4 00 00 = 79.25MB,实际C盘为75.4MB

rofs+user=0C 3E 00 00

想要修改的数据为:

rofs: 04 D0 00 00 = 77MB(这个是想要修改为多少就多少,只要在可行的rofs+user范围内。)

user: 07 6E 00 00 = 118.875MB(实际C盘为114.3MB,会被吃掉4到8MB的容量,原因未知。)

确定红色框里面的分区数据大小:rofs:07 4A 00 00改为04 D0 00 00,user:04 F4 00 00改为07 6E 00 00。

通过计算user起始地址:02 EA 00 00 + 04 D0 00 00 =07 BA 00 00,那么蓝色框的值就改为07 BA 00 00。

并且计算RF总值:07 BA 00 00 - 1 = 07 B9 FF FF,那么绿色框的值就改为07 B9 FF FF。

修改好之后保存,退出WinHex。然后打开NFX,把改好的核心包直接

拖到NFX里面。

双击“打开固件”的右边一点点,如上图的红框位置。看到rofs1、rofs2、rofs3、user的分区信息

根据Z盘容量为04 D0 00 00和C盘容量为07 6E 00 00,计算你要调整rofs1、rofs2、rofs3的值和user的值。我改的数据如下:

修改了rofs1则点击一下rofs1对应的“修改”,就会完成修改rofs1。

修改了rofs2则点击一下rofs2对应的“修改”,这时会弹出一个框让你选择对应的rofs2,选择相应的文件后即可打开。

同理rofs3和user也跟rofs2分区修改的操作一样,user对应的文件是uda文件。

修改好之后,crc值会发生变化,可以根据vpl文件的记录,把每个文件的crc值调整过来。

发布评论

评论列表 (0)

  1. 暂无评论