揭竿而起 闯进大内( 二 )


建议大家先将默认的32M闪存内容读出来保存好 。
Read Flash和Write Flash是我们出手的宝剑,兄弟们务必一招夺命啊!
警告:使用后手机有可能开不了机了!断开连接 。不行?莫急,按死机方案处理,这个大家都知道的 。
右手剑:Smelter 4.6
这是一个陌生而又令人费解的名字 。字面意思是“熔炉, 熔炼工” 。这就是我们修练上乘武功的葵花宝典 。
运行Smelter,语言选择英文 。打开我们读取的32M文件,按“Information”菜单显示如下:

这里统计了一些比较笼统的数据,包括固件、内置图片、语言包以及EEPROM的数量和位置等信息 。从图中可以看到,一些EEPROM区域被删除了,另外C6C的Menus一项为0,而CX65为62项(16版) 。
该软件有6个常用的手机信息快捷按钮,分别介绍如下:
E:EEPROM 信息 。这是梦开始的地方,像启动航空模式之类的功能都可以在这儿实现 。

这里我们只需要关注Description、Offset这两列内容,前者是功能定义,后者是该功能在闪存中的地址偏移量(与A0000000h相或后才是绝对地址) 。通过分析可以发现,这些地址集中在0023xxxxh~0024xxxxh和00FExxxxh区域,换算成地址块序号正好对应着地址映射图中的粉红色EEPROM区(第17、18、127块) 。
按鼠标右键可以保存相应的程序代码,配合仿真器或反汇编程序即可掌握该功能的工作原理,进而设计自己的补丁程序 。
L:语言包 。

这里是手机固化的菜单、设置等的文字内容及其位置信息,按鼠标右键可以显示不同的语言包文字及其位置信息 。据此可以修改不恰当的翻译方法,例如将“播放视讯片”(地址偏移量1BA64Ch)改为“自动换片”等等 。
M:菜单 。

这里是按键和快捷按键的入口地址 。我们熟知的DSE 1.0.4.2就是在这里面做的文章 。其中Entry一列就是该键的入口地址,改变这个地址就改变了按键定义,同时,我们顺藤摸瓜就可以追踪到该功能的程序入口 。这里可是各路豪杰大展拳脚的地方,比如进入通讯录查找功能中,把首汉字首拼音查询改为所有汉字的首拼音查询 。分析程序的秘密和原理也可以从这里入手 。
P:内置图片 。

包括系统的九宫图标、录音机的动画等等,包含了地址、大小和图片等资料,非常直观 。有趣的是,gif格式的动画在手机里是一幅幅静态图片,最后由定时程序合成动画 。更改系统图片可以用专门的软件SPC3来实现 。
F:文件系统 。包括系统文件(地址映射图中的蓝色方块)和用户文件(黄色方块) 。

通过计算可以看出,通过红外线或数据线传到手机里的数据都储存在了黄色的用户文件区里面 。隐含文件夹config下的内容位于蓝色的系统文件区里面 。凭直觉,两个区的容量之和应该大于系统的最大标称空间10.32M 。
让我们计算一下:蓝色方块20个=2.5M,黄色方块89个=11.125M,二者合计=13.625M,比标称的最大空间大3.305M!
我的手机现有6.75M空间,传一个200K的文件到data目录下,空间变为6.55M 。删掉,传到config目录下,空间还是6.75M!没有变化!继续传了共计840K的文件,传不进去了,加上原来的849K系统文件,总计1.65M 。再向cache目录传文件,共计270K装满 。这样,两个隐含目录原有文件855K,又传入文件1110K约1.1M,总计>1.9M,系统文件区剩余约600K,而这时手机的文件管理器显示的可用空间仍然是6.75M!接着运行几个软件,一切正常 。
至此,我们找到了1.9M空间,可以用MPM/SiMoCo来存储文件,但是,还不能在手机里很方便地加以利用(可以将default目录下的系统默认图铃改为自己喜欢的同名大文件来加以利用) 。另外还有约600K的系统空间和约800K的用户空间无法访问,这些空间(约12个地址块)很可能被系统留给了文件名和目录数据库以及一些后台生成的临时系统文件等 。

推荐阅读