重要:手机必须解BL,需要用rec刷入改好的镜像,所以请解BL后在进行操作。
BL解锁教程:http://www.meizubl.com/
大概思路:
splash.img内图片结构:
图片数据是以连续地址在splash中储存的,所以我们使用HEX工具将属于启动图的那段数据替换成为我们想要换成的图片的数据即可。
这里有一点主意,经过本人实测,一般的bmp文件数据替换进去没有用,启动图会消失(开机正常只是不显示启动图),需要用电脑自带的画图在提取出的源bmp的文件上修改编辑(用别的软件修改编辑有没有用不知道,亲测ps编辑提取的启动图后在刷入也会失效)。
1.手机下载 镧·系统工具箱
使用工具箱导出Splash分区(魅族16th没有logo分区,不清楚其他机型)
2.电脑安装python,binwalk(软件安装教程不在赘述)。
3.将手机导出的splash.img放到python目录下的Scripts文件夹下(该文件夹位置因人而异,我的是在 C:\Users\16490\AppData\Local\Programs\Python\Python311\Scripts ),将dd.exe也放到该文件夹。
4.在Scripts文件夹下打开CMD,使用命令 python binwalk splash.img 分析img文件
python binwalk splash.img
运行结果如下
可以看出这个img有8张bmp格式图片,DECIMAL是起始地址的十进制,HEXADECIMAL是起始地址的十六进制,从首张图片的头地址20480到下一张图片的头地址6241366一共是6220856,所以我们在CMD中使用dd(注意要把dd.exe放到Scripts目录下,在该目录使用dd命令)命令获取从20480开始的后6220856个数据
dd if=splash.img skip=20480 count=6220856 of=1.bmp bs=1
稍等片刻等到出现 6220856+0 records out 就可以在Scripts文件夹下看到提取的1.bmp文件了。
我们发现第一张图是充电提示
按照上述方法 通过 (下一张图片的头地址-本图片的头地址)=文件大小,算出图片文件大小,使用dd命令分别提取出其余几张图片(dd 命令的 skip参数是起始地址,count是从起始地址后取的位数 也就是文件的大小)(这里就不全放出来了)
最后得到24903900是启动图的起始地址,我们使用dd命令提取启动图。
重点来了啊!!!!!!
使用画图工具打开启动图,点击导入,导入你想替换的图片然后保存!
使用WinHEX打开该图片
Ctrl+A全选然后 Ctrl+C复制,关闭该文件,
使用 使用WinHEX打开splash.img
点击下部工具栏“选块”,选择 17C00DC到1E6CA92,(不清楚地址是咋来的,请返回看binwalk分析出的十六进制地址)
右键单击17C00DC位置“42”的“4”选择“编辑”
选择“剪贴板数据”->“写入”,把我们刚刚复制的启动图文件的内容写入进去,
保存。
将修改好的splash.img刷入,
开机测试。。