MTK手机修改data分区分配大小EBR1/EBR2

来源:互联网 发布:软件项目管理体系ot 编辑:程序博客网 时间:2024/06/05 16:14
需具备16进制编辑器+小算盘+基本电脑常识
另外这是mt6589的改法..mt6577只有ebr1的别全照着改
有看了下v970的线刷包文件,ebr1只有usrdata和fat,android和cache都在mbr

先上图



确认图1蓝色部分顺序是android>cache>usrdata
如果后面接着是__nodl_fat也没关系
并先算出x值(本案例是0x37c00000)

说一下个参数代表啥(0x开头=16进制..先说下)
图1
a=usrdata.img(也就是data分区备份镜像)写入起始位址
b=fat_spare.img(内卡fat32分割表镜像)写入起始位址
x=data分区大小

图二
a/c/d=分割起始相对磁区号
b/e=分割总的磁区数

首先拔掉sd卡后到手机内的储存空间看
"内部储存空间(俗称data分区)"+sd卡或手机储存(都称为内卡..不管它显示啥)
计算出容量,本case蓝天信b6000原厂分配共6796m左右(去小数点)..先记着

接下来看图1中x的数值是多少..此case是0x37C00000
拿去除以图2的b值0x1be000如下
0x37C00000/0x1be000=0x200=512 (bytes)

得出每磁区大小为512bytes..在来把上面原厂分配的容量拿来除
6796*(1024^2)=7,126,122,496(mb换算成byets)
7,126,122,496/512=13,918,208(算成磁区数)
最后把13,918,208换算成十六进制得出=0xD46000(新b值)
再来替换图二b值..原本是"00 e0 1b 00" 改成 "00 60 d4 00"(字节反著看/填就对了)

此时ebr1已修改完成,再来就一堆小算盘游戏啦..照着图2的规则
去得出ebr2的新d和e值

0x172800+0xd46000-0x1b400=0xE9D400(新d值)
0xffffffff-(0x172800+0xd46000)=0xFF1477FF(新e值)

原d值"00 54 31 00"替换成"00 d4 e9 00"(字节反著看/填就对了)
原e值"ff f7 cc ff"替换成"ff 77 14 ff"(字节反著看/填就对了)

ebr2修改完成...大功告成可以刷进去了(记得要wipe data)
就酱...by cp296633原创




******************************************************************************************

拿mt6589t的蓝天信b6000(8g rom)线刷包来讲
打开MT6589_Android_scatter_emmc.txt可看到
PRELOADER 0x0|MBR 0x600000和
ANDROID 0x4780000|CACHE 0x26d80000|USRDATA 0x2eb80000|FAT 0x66780000

preloader分配内存地址0x0~0x600000
在来开始才写入mbr..表示下面的内存地址要+0x600000
mbr内有个分区partition type是05h 磁区相对地址为0x400,其他type都83h无视
之前已经得出每个磁区的字节为512=0x200

在来ebr1
00 00 00 00 83 00 00 00 00 08 02 00 00 30 11 00
00 00 00 00 83 00 00 00 00 38 13 00 00 F0 03 00
00 00 00 00 83 00 00 00 00 28 17 00 00 E0 1B 00 
00 00 00 00 05 00 00 00 00 B4 01 00 FF FF FF FF 

(0x20800+0x400)*0x200+0x600000=0x4780000(ANDROID)此为ebr1第1个分区
(0x133800+0x400)*0x200+0x600000=0x26d80000(CACHE)此为ebr1第2个分区
(0x172800+0x400)*0x200+0x600000=0x2EB80000(USRDATA)此为ebr1第3个分区

目前为止都吻合,在来是05h的partition type,把第三个分区的相对磁区+总磁区数相加
(0x172800+0x1be000+0x400)*0x200+0x600000=0x66780000(fat)此为内卡fat32分区表镜像

我只找出规律..相关原理请参考wiki/google

原创粉丝点击