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值调整过来。