揭竿而起 闯进大内

“居庙堂之高,则忧其民”、“处江湖之远,则忧其君” 。
这种君与民的“思念”之情同样发生在x65手机与我们之间 。然而,我们今天却要舞起双剑、冲进内宫搞搞震!
左手剑:x65 flasher
这个x65 flasher就是我们盼望已久的x65手机的刷机软件!
它的主要功能如下:
1.读写手机的闪存;
2.备份和恢复手机的部分或全部闪存:FUBU(flashfile FUllBackUp)和filesystem(文件系统)、firmware(固件)、bootcore(启动内核)或EEPROM lite;
3.将刷过补丁的bootcore复原;
4.显示闪存地址映射图;
概括起来,刷机软件的主要作用就是刷补丁和恢复系统 。
使用前需做一点准备工作:用软件包里的一个java程序px65i.jar破解bootcore(复制到javajam目录下运行,显示*** OK ***时表示破解成功) 。
然后,手机(要充足电)关机、插上数据线、运行x65 flasher,显示如下界面:

揭竿而起 闯进大内



选择正确的数据线连接端口和速率(一般选115200),按Connect连接手机,稍后短按手机的开机键确认连接,显示:

这里按照功能划分共有三个部分:
Flash Map:手机的闪存地址映射图 。

x65手机内部MPU的程序和数据地址空间为32M(A0000000h~A1FFFFFFh,长度2000000h) 。从图上看,闪存的地址空间是连续的,实际在物理上可能对应着不同的逻辑器件,例如bootcore(A0000000h~A001FFFFh)可能位于MPU芯片内部,EEPROM和固件也可能位于外部不同的存储器件中,只是这些器件由地址译码器统一在一个便于管理的连续空间内 。
映射图将地址空间显示为16x16共计256个128KB(长度20000h)的地址块,每一个地址块就是一个基本的功能划分空间,同一功能可以按照简化布线的原则占用不同的地址块 。
地址块的位置序号(从左到右、由上到下、从0算起)和起始地址之间的换算方法是:将“序号x128x1024”的结果转换成8位16进制数,再与A0000000h进行逻辑或操作(这里相当于将地址的最高位改为A) 。例如,EEPROM(第1个粉红色的地址块)的起始地址为:(17x128x1024)h A0000000h=220000h A0000000h=A0220000h 。
【揭竿而起 闯进大内】地址的计算和转换可以用Windows的科学计算器来完成 。反过来计算可以由地址获得地址块序号,从而判断出所属的功能区 。
Map相当于皇宫的地形图 。
Backup和Restore:实现上述第2项功能 。备份的FUBU或者其中的部分内容保存为.fbk文件 。需要注意的是,这些.fbk不是纯机器码文件,而是一种目标文件,里面储存着一些地址信息,只能供恢复系统之用,不能用于刷补丁 。建议大家利用一点时间做个FUBU(大约40分钟)和全部单项的备份 。
Backup和Restore给我们留下了东山再起的退路 。
Read Flash和Write Flash: 实现刷补丁功能 。输入起始地址和长度后,按Read Flash键可以读出纯二进制机器码文件,文件名为:起始地址.bin,建议不要改文件名,除非你另外记住了这个地址,否则一旦将这个文件写入到了其他的地址,你的手机可能会疯掉!
作为研究之用,你尽可以读取上述地址范围内的任意一个字节或者一整段内容,但是需要注意,x65的闪存器件都是按页写入的,即一次写入一个128K的地址块,所以,当你想要刷补丁时,读写的起始地址和长度就必须一致并且符合以下要求:二者必须都是20000h(即128x1024)的整数倍 。例如,起始地址A1230000h是错误的,A1220000h是正确的;长度10000h是错误的,40000h是正确的 。
读出来的地址块备份后用UltraEdit编辑(打补丁),然后再按原地址和长度写回去 。有关打补丁的方法请参阅宝典中的相关文章 。

推荐阅读