6688经验半月谈( 二 )


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问题我会在写一篇 。
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的帖子)
1389H - 13ABH 的36中的24个和Java激活有关(部分有效)
二、Flash(软件)及其相关问题 。
1、Flash中的数据:
Flash中的数据主要是指图片、铃声和字体Fonts,他们也是通过索引存储的 。
铃声的是每条记录八个字节,有用的是地址和索引号 。在中文5508版里这个索引在44E526H处
图片的是每条记录八个字节,前面两个是大小,用如下表示width * hight 。中间是01 00
最后是地址,5508的索引在500000H处 。
字体的我没有看
有一个需要注意的是,这些索引记录里的地址到Flash地址的转换关系为:
索引地址 Flash地址File地址
RLWORD FLWORD=RLWORD FLWORD
RHWORDFLWORD=FHWORD*4000HFLWORD - 00A0H
File_ADDRESS = ( RHWORD * 4000HRLWORD)- 00A0
例如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 #[UpperRight] 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 而对应的文件地址是

推荐阅读