yokai 发表于 2003-8-10 18:04:00

西门子6688升级55版全步骤!

这片文章是很早前写的,有些观点可能不正确或不完善

6688系列升级浅谈


最近买的6688(21版)。因为不甘寂寞,买来后就开始进行刷新软件的探索。

首先说一下手机一些知识,它的主要模块,包括CPU,西门子6688的是80c166的芯片;一些专业模块芯片,如信道编码器、数字信号处理器、调制解调器等;还有接口模块,包括系统接口、SIM卡接口、EEPROM接口、存储器接口,其中重要的是系统接口中包括程序的下载等功能,而EEPROM接口主要存储用户数据和射频参数。如手机识别码(IMEI)、语言选择、键盘锁、双音多频的开/关和射频的校准参数等,存储器接口包括ROM和RAMROM接口主要用来连接存储程序的存储器FLASH ROM,在FLASH ROM中通常存储layer1,2,3、MMI和应用层的程序。RAM接口主要用来连接存贮暂存数据的静态RAM(SRA M)。现在有种趋势是将EEPROM也存储于FLASH中。

下面我指的FlASH和EEP都是指的里面的内容。

有了以上资料可知,刷新软件是不会使手机瘫痪的,因为系统接口是不会被刷新抹掉,所以失败后大不了从新开始。刷新主要是更新手机的软件,即主要是FLASH的内容,高版本的Flash可以识别低版本的EEP(并作自动转换),但低版本的Flash并不能识别高版本的。就我目前的经验来看,52,54,55的EEP内容应该是互相兼容的,21不兼容以上的。49我没有试过,更低版本也没有试过。手机具体的刷新过程是刷新软件将启动代码上传到手机RAM中,然后它负责和手机通讯及读写Flash。

下面在就论坛上讨论最多的刷新软件进行一些说明,现在的论坛上主要应用的有三种:

其一是Winswup32,据说是西门子内部使用软件,有版权保护,所以大家拿不到最新版。验它刷新时只刷Flash部分(SW),不影响EEP,其中又分两种,一个是把XBZ(一种压缩文件)文件打包进可执行文件内部,另一种是和XBZ文件分开。

其二UniSiemens,类似的有SieFlasher,zSiemens和KSiemens(不是通常的bin)他们都可以直接操作手机上的FLASH和EEP,而且可以指定地址和大小进行操作,功能上很强大。还有俄国人做的V_KLay,它设置了一种语法,写好修改地址:原值 目标值之后就可以了,其实就是先读出,修改后在写入。不过他还可以修改键盘映射。还有一些其他的小工具,只是具体到只操作某一地址有特别意义的内容,如改电压参数的,激活JAVA的,还包括印尼的RizaPN作的FFmod(这是一位大师级人物),可以修改铃声图片和字体。以及也是俄国人做的可以导出语言包的工具slged,其实所有以上的可以归为一种,都是只对FLASH和EEP进行操作,不过是有的大而全可以修改所有地址,而有的只修改特定意义的FLASH或EEP。这些软件的使用请看《Siemens常用软件介绍及一些问题的处理》。

其三就是做重做MAP的了,其实它也是修改EEP,但另列出来是因为它需要读一些除EEP和FLASH之外的东西,即PHONE ID,然后根据你输入的IMEI,作出一个MAP,存于EEP中,用了别人的EEP一定要重做MAP。

对于6688系列的版本号说明
欧洲版本:
SL45: Firmware V03, V05, V09, V16, V19 & V23 => 当前: V23
SL42 LAG: Firmware V81, V84 => 当前: V84
SL45i: Firmware V43, V49, V52, V54 & V56 => 当前: V56
中文版本
6688:V08 ,V16, V21=> 当前: V21
6686:V21=> 当前: V21 当前
6688i:V49, V52, V54 , V55 => 当前: V55

以上说了这么多,大家应该对刷新软件有一个底层的认识,那下面的操作就很简便了。

先说一下6688的FLASH和EEP,FLASH是从地址0开始到0x5F0000,而EEP是从0x5f0000开始,到0x600000,这些可以从UniSiemens看出来,都是16进制表示。我以后指的写入Flash都是指的只写Flash,即将size调整为0x5f0000后执行write flash。另外FULL FLASH包括EEP,即从0开始,到0x600000。读入FULL FLASH后,如果没显式调整SIZE,是默认写入EEP的,所以有的朋友说没写EEP,不正确的。因为工具是统一寻址的,写入到那里只与地址和SIZE 有关。


我对大家的建议是首先备份自己EEP,这些有很多说明了,就是用UniSiemens选中SL45i,然后read eep ,接着写入到文件。其实FLASH不必备份,因为所有同一版本的FLASH都应该相同,但EEP是和你自己手机关联,独一份。另外需要注意的是网上所有的FLASH都是FULL FLASH,既包括了EEP的,大小是6M,它的最后54KB就是机主的EEP。有了自己的EEP,就后顾无忧了。

一,从8、16、21到49,52,54,55可以只刷新Flash保留EEP,到49,52都有做好的Winswup32,是不写EEP的,从54开始到55因为以前版本的EEP和这个版本的FLASH配合,会产生没有JAVA 的情况,但是可以用激活工具来激活JAVA,但激活后会丢失线路选择,虽然无关使用,但为完美主义者所不容。就我的经验,在激活前是有线路选择的,所以我认为是在EEP中储存有选项,经过SL456688i兄的指点,确实如此,是Block71在起作用,因此可以通过修改EEP来重新找回线路选择,我做了一个工具专门用来写这个Block,见附件。讨论详情请http://www.mobilenpc.com/cgi-bin/6688i/topic.cgi?forum
=5&topic=20573&start=0&show=0
如果你刷了和原FLASH一起的EEP,据说是有线路选择和JAVA的,但必须重做MAP,而且刷了别人的EEP后,会有其他的问题,因为参数都变了,现在刷的电压参数只是一部分,得不偿失,有极大的可能性产生电压问题。而用以上方法,用自己的EEP而直写入Flash部分,接下来读出EEP,用我的工具修改一下,在写回去,就会有线路选择,有JAVA,无飞机检查。


二,从高版本降低到低版本,如果你有最初的备份,只需刷新相应版本的FLASH,然后刷自己的EEP,我主要实验的是21版,因为行货保修的话,21版的6688是客服提供的最高版,会被保修。如果你是一个偏执狂,想要降级到8版,16版,如果你有相应的EEP应该是不成问题。但我没有,所以也没有试验。但是只要是自己的EEP,刷完之后就不用作MAP。即如果你保留了最初的FLASH和EEP,刷回后就会还原如初。 如果你没有自己的EEP,以后你想降到任何版本,则只需写入FullFlash,然后作MAP即可。

**注意以上操作在98,2000,XP上都可进行

三,需要作MAP。如果你刷了别人的EEP(没有自己低版本的EEP或其他原因),那么必须重做MAP了,因为里面存储的IMEI信息是别人的,和你的Phone ID不符,所以必须重做MAP,这些已有很详细的说明,就不多说了。

**注意这一步必须在98系列上才能做
注:用KSie或别的工具也可以在任意系统下作

以上是我几天来的经验,和一些资料上的东西,并得到SL456688i的热情帮助。这其中包括了一些我自己的揣测,
不是完全正确。欢迎高手指出其中的错误,不胜感激。


办法一:
准备工作
??所需工具:
??1.usimload(xp 2000)或者Unisiemens(me 98 95)好像98下也能用usimload(反正哪个好用哪个好了!)
??2.coollang的siemens_coollang eep修改工具
??3.55版的flash文件
??备份
??备份flash和eep(请将手机关机)!!!手机eep必须备份!!!
??1.运行usimload软件,在左下角选择sl4x手机(以下同),其他的不用修改,点击read flash,用数据线的短按开机键(用原装适配器的,数三秒后把手机插入适配器),连接手机后软件information窗口区会显示send boots,稍等软件下方会出现进度条,如连接不成功的话可以按右下角stop activity停止软件搜索并拔掉手机重做以上工作。直到成功!等进度条完全走完并消失,右边显示ready表示备份完成。整个过程大约需要10分钟多些(跟你电脑有关)点击save file存盘为21flash.bin.不要关闭usimload,也不要拔掉手机!
??2.按read eep,则软件下方会出现进度条,备份eep相当快(一分钟左右即可完成),等进度条走完,右边显示ready就表示备份完成了,按save file保存自己的eep文件如21eep.bin,不要关闭usimload !!!也不要拔掉手机!
??开始升级
??1:更新Flash,按read file读入55任意版Flash,更改Flash处(上面两栏)为From:0 Size:5F0000。(注意是5F0000!不是600000!!!) 然后按write flash ,直到写入完成。(约需10分钟多些)
??2:写入完成后,取下电池再重新装上,开机。这一步是需要的,因为55版的EEP在部分上不同于21版,开机后会更新你的手机EEP。这时查看版本号发现已经为55版了。 但是你会发现上网和娱乐里没有java,(如果有下面步骤都可免了,呵呵)别急,下一步——
??3:关手机,再回到usimload,按read eep出现scaning提示后短按手机开机键直到读入完成,然后保存为文件,如eep.bin。
??4打开coollang的eep修改工具Siemens_coollang,按FindEEP打开EEP文件eep.bin,然后按PatchEEP。退出Siemens_coollang即可。
??5.按“open file"调入修改后的eep文件,按“write eep”后出现scaning提示后短按手机开机键(用原装适配器的,数三秒后把手机插入适配器)直到完成。
??取下电池再重新装上(会重置机器,等效于电脑的Reset,因为有的工具在读写EEP后,必须重置才能开机),开始有个提示:是否移动Sim卡(即将sim卡中的电话移入通讯簿),选择否即可。开机后会发现,你所刷的Flash的Patch已全部生效(当前的修改都是对Flash的),而你所有的配置还全部保留,当然包括开机动画铃声及电压参数什么的。Java已经激活,没有了飞机检查而有线路选择。
??说明:1.如果某一步没有紧接着上步来做,可能不能直接连接,此时请在出现scaning提示后短按手机开机键(用原装适配器的为数三秒后把手机插入适配器)如果不能出现scaning提示,请拔掉电池再装上即可!
??2.用win98 me 95 的朋友,usimload如不能用请换用UniSiemens
??3.短按手机开机键是指用数据线连接的朋友,用原装同步适配器的朋友为数三秒后把手机插入适配器
??4.相关软件下载地址:
??usimload(UniSiemens)下载地址:http://www.9966i.com/6688/soft/SiemensSoft5408.rar
??Siemens_coollang下载地址:http://www.6688ok.com/bbs/uploadImages/200333120212599777.rar
??(由于这阵子风雨者不是太稳定,如果不能下载也可email到globean@263.net)
??55版flash下载地址:这个网上有很多
??5.本升级办法是对coollang升级办法的补充说明,感谢coollang!


[此贴子已经被作者于2003-8-10 18:12:59编辑过]

yokai 发表于 2003-8-10 18:07:00

方法二:
我自己经过无数次实验的55+N升级FLASH和EEP!建议大家升级前备份好自己的FLASH(建议完整FLASH),EEP,电压参数!
西门子6600手机55+N版软件升级后主要功能改变如下:
功能列表如下:

1.无飞机检查
2.有线路选择
3.MP3后台运行
4.长按#解锁
5.锁状态双击播放键播放MP3
6.增加快捷进入收件箱
7.时间提醒改为50秒,间隔一分钟
8、比格牛完美图形菜单
9、锁键盘待机动画(偷吻)
10、快捷方式#号进入发件箱
11、快捷方式0键进入JAVA
12、来电动画修改为太极动画
13、9296机油震动图标修改
14、MP3播放中长按PTT播放下一曲或退出
15、MP3调节音量数字指示
16、MP3更多音色调整 v2.2
17、拨号去电动画修改为奔马图标
18、播放MP3时自动显示时间V2无冲突版
19、Rainmoon大虾电量不足关机动画修改
20、9296机油卫星天线信号图标、电量指示图标修改
21、短信发送动画修改为小新动画
22、短信保存到MMC卡时文件名去掉多余的_001_001
23、短信存放在MMC档案转发不自动保存备份
24、仿三星键盘锁修改
25、加快Java的载入速度
26、解决用户自定短消息关机丢失的BUG
27、通讯录来电区分为私人电话,手机,办公电话,传真
28、来电号码姓名同时显示
29、通话期间按上开背景灯
30、任意铃声对任意人来电防火墙V3a版
31、增加快捷方式进入短信MMC卡档案
32、手机固有铃声已用FFMOD修改,以加入牒中牒、菠菜、I BELIEVE、鸟叫、警报、爱立信标准音、摩托罗拉标准音等热门铃声 。

升级软件下载地址:http://www.cn2hand.com/usr/1/1_4718.rar
谨供新机油或参考下载升级用!

yokai 发表于 2003-8-10 18:15:00

手机文件地址和Flash地址的关系。所谓文件地址就是导出的FULLFW文件的地址,而Flash地址是西门子软件在Flash内部使用的地址,如函数调用和Block地址等都是用的Flash地址。其表达式如下:
Flash地址 = 1000000H - FULLFW_SIZE + 文件地址
注:其中FULLFW_SIZE为Flash+EEP的大小,6688为600000H。十六进制一律在后面放H。

一、关于EEP及相关部分。

1、EEP的存储结构:
EEP是按块Block存储的。这个大家应该都看到过一些,比如修改电压的Block67,和线路选择及飞机相关的Block71等。而EEP由主要分为两部分:EEFULL和EELITE。EEFULL主要是和机器软件的相关配置有关的内容,而EELITE更多的是和设备信息有关的内容(这些是我的理解)。从EEP中寻找Block是通过索引的,这样做有很大的好处,会编程的人都知道,链表比数组有更大的灵活性。EEP也是这样,如果Block的大小和结构发生变化,不会影响到其他的Block。在EEP中有6个EEFILL区和一个EELITE区,每个是2000H字节。开始地址分别是000H,2000H到A000H。而从C000H到FFFFH是EELITE。每个区的索引都放在最后面,每条记录12个字节。数据结构如下:
EEPROM Block Directory Record format:
Offset    Size   Description
------   ---------------------------------------------------
00      BYTE      Record starting marker 记录标志为00,F0或FC
                   00= Unused block?   不用的Block
                   F0= Deleted block?删除的Block
                   FC= Used block?当前有效的Block
01       BYTE   Version.
                   Always zero in LBA_FS & EE_FS blocks.   EE_FS在Flash中
                   Only EELITE blocks that has 04 & 05.
02       WORD      Size
04       DWORD      Linear address of data 此处为Flash地址
08       WORD       ID 为平常说的BlockXX,如Block67
0A       BYTE       ???
                  Always zero in EEFULL & EELITE blocks.
                  Always 02 in LBA_FS & EE_FS blocks.
0B       BYTE       Record ending marker
                  FF= No more record
注:此资料来自于SL456688i

现举例如下:Block71
FC 01 C8 00 74 F9 FF 00 47 00 00 FC
FC 开始标志,当前有效
01 版本
C8 00文件大小00C8H = 200
74 F9 FF 00Block地址,为Flash地址00FFF974H,转换为文件地址为FFF974H - A00000H = 5FF974
47 00Block ID 0047H , 0047H = 71
00 在EELITE 中为 0
FC结束标志。

2、目前我知道的有意义的Block如下。
0043H: 电池相关
0047H: 线路设定和飞机检查(可能只与第一个字节有关)
138FH: 对比度
1391H: IMEI Block 00
004CH: IMEI Block 01
1390H: IMEI Block 02
13D5H: IMEI Block 03 含有这四个Block的文件就是Map文件,Map问题我会在写一篇。
1459H: 保存预制短消息

Battery status (0043):
- 0000H : BattMin Data1
- 0002H : BattMin Data2
- 0004H : BattMax Data1
- 0006H : BattMax Data2
- 0008H : BattTemp Data1
- 000AH : BattTemp Data2
- 000CH : EnvTemp Data1
- 000EH : EnvTemp Data2
- 0010H : VCXOTemp Data1
- 0012H : VCXOTemp Data2
注:以上来自于RizaPN
另外还有1394H:电池序列号和标称电压(见SL45668i的帖子)
138DH:和Java激活有关

二、Flash(软件)及其相关问题。

1、Flash中的数据:
   Flash中的数据主要是指图片、铃声和字体Fonts,他们也是通过索引存储的。
   铃声的是每条记录八个字节,有用的是地址和索引号。在中文5508版里这个索引在44E526H处
   图片的是每条记录八个字节,前面两个是大小,用如下表示width * hight。中间是01 00
   最后是地址,5508的索引在500000H处。
   字体的我没有看
   有一个需要注意的是,这些索引记录里的地址到Flash地址的转换关系为:
   索引地址      Flash地址File地址
   RLWORDFLWORD=RLWORD   FLWORD
   RHWORDFHWORD=FHWORD*4000H         FHWORD - 00A0H

   File_ADDRESS = ( RHWORD * 4000H + RLWORD)- A00000H

   例如5508的第一条图片记录 04 04 01 00 FA 3F A1 03
   为4 x 4 的图片,Flash地址为 E87FFAH 文件地址为 487FFAH


   用RizaPN的软件FFMod可以处理铃声,即把你的铃声导入到Flash中代替系统铃声,他本来也可以处理图片和Fonts,但是用在中文版上好像不能找到索引,不能处理图片。我目前正在写一个处理图片的程序,用来导出和导入Flash中的图片,比如更改开关机图片(112 -137)。

2、Flash的程序修改:
  这到了关键的地方了,前面所有的东西都是数据方面的,而现在要修改程序的流程,是真正个性化6688,增加他的功能的地方。这个我刚开始做,其实主要的任务是寻找常用函数的入口地址和函数标示符,所有的修改都基于这些,他就相当于系统提供你的API,当然西门子不愿意给你,如果在C的基础上更改这些是易如反掌,但反汇编后在做就难度很大了,而且不像PC机一样,可以动态调试,所以只能看静态的代码。但幸好RizaPN已经做了非常多的工作,虽然是在56上,当并不是所有的模块都更改了,所以,对照与56版的FLASH,相当于RizaPN已经给我们做了一个内容相当多的注释,所以说,我们已经站在了巨人的肩膀上。简单的东西可以直接比对两个版本,找到相同的地址,然后修改即可,但重要的反复的实验,找到尽可能多的函数地址和ID。这是做一切修改的基础。下午时,我对照于RizaPN的修改,更改了55版的#键。这里做一个注解给大家:

RizaPN做的修改:
Modify # from "View New CB" to "Java"

It will keep the ability to use # button to view the flash message when it is there...

If you already apply this patch with the old values, don't forget to reset all data to the original ones

0x3B31AC : 7D 03 -> B0 0D ...
0x3B3398 : DA D9 1A 49 -> DA D8 B4 E1 ... (see table)

我们就先找到这个#键在5508所对应的地方,看DA D9 1A 49反汇编后就是CALL D9491A 而对应的文件地址是CALL 39491A,我们在56中找到这个地方,拷贝一定数量的字节,然后在5508中寻找相同的部分,我找到两处,在去除跳跃地址的影响,和对后面的比对,找到一处在3C7F4。然后搜索DAD3F4C7,找到一处0x3634a6。比对和56其他部分,发现相同。因为除调用地址不同,其他指令应该相同。认定这就是5508中#键的处理。在根据和56中相同的偏移量找到表示符15 04(0415),然后从SL456688i的修改中,找到收件箱的地址和标示。分别为DAD360A0:38 01 把此值放于对因位置。写入开机,发现#的功能已变为收件箱。当然这是很幸运的,估计更多的时候是错误,因为这里有很多的猜测和运气。但这是一种方法,你可以用这个来测试其他的函数入口。因为Crack本来就需要很多的猜测和运气。比如我看到"读C"得下一个地址DAD15A06 (31065A),放进去,发现是用户群组。

好了,很累了,就先写这些吧!另外我发现写MAP只是写了上面的四个Block,根本不必非的在98下写,我会在写一篇关于如何写MAP的。


本来还向介绍一下西门子的函数库Bfb95eg.dll的一些内容,这个库是很重要的,有很多的软件用它来和手机进行通讯,它可以把启动代码载入到手机上执行,读写一些块更是小意思。国外的一些网站对它研究很深,他们把它反汇编了,然后再还原成Dephi代码。他对写和西门子的手机通讯程序很有用,比如你想写一个修改手机某些 Block的程序。
如下供参考。

Function WmobileOn(MobHandle : TmobHandle; Baud : DWord) : Dword; cdecl; external "BFB95EG.DLL"

Disassembled function fith some my coments:
Code:

.text:10011670 ; Exported entry 211. WMobileOn
.text:10011670
.text:10011670 ; --------------- S U B R O U T I N E ------------------------------------
.text:10011670
.text:10011670 ; Attributes: bp-based frame
.text:10011670
.text:10011670 public WMobileOn
.text:10011670 WMobileOn proc near
.text:10011670
.text:10011670 BaudRate = dword ptr -4
.text:10011670 MobHandle = dword ptr 8
.text:10011670
.text:10011670 push ebp
.text:10011671 mov ebp, esp
.text:10011673 push ecx
.text:10011674 lea eax, ; LOAD Effective Address
.text:10011677 push eax
.text:10011678 mov ecx,
.text:1001167B push ecx

Get Com port Baud rate Code:

.text:1001167C call WGetComConfiguration ; Call Procedure
.text:10011681 add esp, 8 ; Add
.text:10011684 test eax, eax ; Logical Compare
.text:10011686 jnz short Configure_ComPort ; Jump if Not Zero (ZF=0)

If Success then jump to configure Com port, else jump to ErrorRet label Code:

.text:10011688 xor eax, eax ; Logical Exclusive OR
.text:1001168A jmp ErrorRet ; Jump



Andy_33 发表于 2003-11-19 21:13:00

谢谢。。。。老谢!!!顶上去!

jdwjzandsp 发表于 2003-11-26 16:43:00

予以表扬~继续努力!

net2net2net 发表于 2003-12-14 16:52:00

好!鼓励一下小8的同道!!!

yokai 发表于 2004-4-6 23:56:00

楼上也是小8爱好者?
页: [1]
查看完整版本: 西门子6688升级55版全步骤!