分享
 
 
 

6688经验半月谈

王朝other·作者佚名  2008-12-27
窄屏简体版  字體: |||超大  

买了6688已经半个月多。我买到小八的时候,正是6688一改以往的平静,进入一个风起云涌的时刻,或者说是末日的辉煌!(小八还是有“硬”伤的)

首先是6688系列大幅降价,高高在上的价格跌到了一个让普通大众(包括我)都可以接受的地步。其次,SL456688i参考了国外的修改后,在自己的努力下,让这些修改可以应用在中文5508版下,然后更多的国外网站展现在大家的周围,一下眼界扩展到那么大,简直让人马上都难以适应。看看以前的论坛,不由得感觉自己仿佛是井底之蛙。

在这种环境下,以我的本性自然也坐不住了,于是参加到对小八的改造当中,在这个过程中,我看到了许多的国外网站,在感受技术上的差距的同时,也学到了很多的知识,并在实验当中得到宝贵的经验,下面,我就把这些奉献给大家(再不写这个就是学习报告了^_^),它主要来自于看国外高手的讨论,向SL456688i请教的和我自己摸索得来的,是从一个程序员的角度出发,并希望能起到抛砖引玉的作用。

在正文开始之前,先说一下文件地址和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字节。开始地址分别是0000H,2000H到A000H。而从C000H到FFFFH是EELITE。每个区的索引都放在最后面,每条记录12个字节。数据结构如下:

EEPROM Block Directory Record format:

OffsetSize Description

---------------------------------------------------------

00BYTE Record starting marker [00,F0,FC] 记录标志为00,F0或FC

00= Unused block? 不用的Block

F0= Deleted block?删除的Block

FC= Used block? 当前有效的Block

01BYTE Version. [00..05]

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 ??? [00,01,02]

Always zero in EEFULL & EELITE blocks.

Always 02 in LBA_FS & EE_FS blocks.

0BBYTE Record ending marker [00,F0,FC,FF]

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 00Block地址,为Flash地址00FFF974H,转换为文件地址为FFF974H - A00000H = 5FF974

47 00Block 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问题我会在写一篇。

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

RHWORDFLWORD=FHWORD*4000HFLWORD - 00A0H

File_ADDRESS = ( RHWORD * 4000H + RLWORD)- 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 而对应的文件地址是

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, [ebp+BaudRate] ; LOAD Effective Address

.text:10011677 push eax

.text:10011678 mov ecx, [ebp+MobHandle]

.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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有