解决V-KLAY打补丁时因为彼此覆盖使升级失败的问题
浏览:33日期:2023-03-06
VKP补丁虽然可以对小八的功能进行补充,但是如果补丁打多了就有可能因为彼此不兼容或者是版本不对而产生覆盖,使升级不成功。即使有的暂时正常使用,但如果在特定条件下使用到被非法覆盖的部分是就会产生问题,使机器不稳定。下面是我的一点解决办法,主要解决的是本来在ROM中应该是空的地方却有了代码的问题(也就是补丁中xxxxxx:FFFFFFFFFFFF->xxxxxxxxxxxx的部分),其表现为V-KLAY提示读取的数据跟补丁里原始数据不符,如果这时选择强行刷新,就会覆盖原来的代码,成为手机的不稳定因素。我的解决的方法是换到别的空白单元写代码。下面是一个例子,手机的FLASH版本是“6688-V55+25旋转菜单中文版”,要打得补丁是“来电同时显示姓名和电话号码 ”,首先看一下原补丁的代码:=======================================361E2F:D6B21C BF0005〈==原来的程序里要修改的代码1F0500:FFFFFFFFFFFFFFFF DAD6B21CE6FC1000 《=添加到空单元的代码1F0508:FFFFFFFFFFFFFFFF E6FF412CD7400C001F0510:FFFFFFFFFFFFFFFF F3F23D2C5C112D121F0518:FFFFFFFFFFFFFFFF CC00D7400C00A98F1F0520:FFFFFFFFFFFFFFFF F13269312D027C441F0528:FFFFFFFFFFFFFFFF 08F166F40F00F0E41F0530:FFFFFFFFFFFFFFFF 46FE0F002D03BB041F0538:FFFFFFFFFFFFFFFF 29213DEFDB00FFFF1F0540:FFFFFFFFFFFFFFFF 88C0881088F006FE1F0548:FFFFFFFFFFFFFFFF 0D02E00DDAB304DF1F0550:FFFFFFFFFFFFFFFF 98F0981098C008C61F0558:FFFF CB00=============================================如果这时候你读取补丁再“Apply patch” V-KLAY就会警告读取的内容与补丁数据不符合,如果强行就会埋下隐患。所以这里取消升级下面就看一看flash里面是什么样子,用W32dasm打开6688v55+25 bin文件,找到地址361E2F,如下:00361E2E DAD6:00361E30 B21C从2F开始的单元为D6B21C与补丁文件相符,再找地址1F0500,如下:001F04FE 05002C0805:001F0503 002C09......从1F0500开始已经有代码了,不是FFFFF...的空单元了,所以才会报错。那么下面我们就开始动手做了。首先在W32dasm显示的flash内容中就近(001F0500附近)找到足够大小的空单元,容纳1F0500到1F0558的内容,发现往上到001F0354附近有大片的空白单元(内容为FFFFFFFFFFFFFFFFF......)。经计算1F0559-1F0500为59(16进制)个字节,从001F0354开始就已经有足够的空间容纳新添的代码了,于是就从001F0354开始写代码(注意选开始地址数值要选择双数)。打开一个新的文本文件,按原补丁数据不变,仅将地址值改为新的对应值,如下:1F0354:FFFFFFFFFFFFFFFF DAD6B21CE6FC1000 1F035c:FFFFFFFFFFFFFFFF E6FF412CD7400C00 1F0364:FFFFFFFFFFFFFFFF F3F23D2C5C112D12 1F036c:FFFFFFFFFFFFFFFF CC00D7400C00A98F 1F0374:FFFFFFFFFFFFFFFF F13269312D027C44 1F037c:FFFFFFFFFFFFFFFF 08F166F40F00F0E4 1F0384:FFFFFFFFFFFFFFFF 46FE0F002D03BB04 1F038c:FFFFFFFFFFFFFFFF 29213DEFDB00FFFF 1F0394:FFFFFFFFFFFFFFFF 88C0881088F006FE 1F039c:FFFFFFFFFFFFFFFF 0D02E00DDAB304DF 1F03A4:FFFFFFFFFFFFFFFF 98F0981098C008C6 1F03Ac:FFFF CB00现在新代码就改好了,可是还没有完,补丁里面361E2F:D6B21C BF0005 中的BF0005也要作相应的变动。要怎么变呢?看看原来补丁里面就知道了0005其实就是原来地址1F0500里的0500,为什么要写成0005而不是实际的0500呢?因为机器里面数值存储是先存低位再存高位。于是就把BF0005改称BF5403,这是我们的新地址,同样要先低位后高位,至于BF是什么用的就先不管他了,猜想也是跳转或条件处理什么的。当然如果代码中还有其他的新地址相关的也要统统改过来。看看汇编代码,不认识也可以猜出来。这样,我们的新补丁就做好了,像这样:361E2F:D6B21C BF54031F0354:FFFFFFFFFFFFFFFF DAD6B21CE6FC1000 1F035c:FFFFFFFFFFFFFFFF E6FF412CD7400C00 1F0364:FFFFFFFFFFFFFFFF F3F23D2C5C112D12 1F036c:FFFFFFFFFFFFFFFF CC00D7400C00A98F 1F0374:FFFFFFFFFFFFFFFF F13269312D027C44 1F037c:FFFFFFFFFFFFFFFF 08F166F40F00F0E4 1F0384:FFFFFFFFFFFFFFFF 46FE0F002D03BB04 1F038c:FFFFFFFFFFFFFFFF 29213DEFDB00FFFF 1F0394:FFFFFFFFFFFFFFFF 88C0881088F006FE 1F039c:FFFFFFFFFFFFFFFF 0D02E00DDAB304DF 1F03A4:FFFFFFFFFFFFFFFF 98F0981098C008C6 1F03Ac:FFFF CB00好了,把新的补丁拷贝到v-klay里面,或者文本文件保存,把扩展名改为.vkp就成了一个新的补丁文件了。现在再打这个补丁就不应该再提示不相符了,一路执行下来,开机,来电显示就变成了既有人名也有电话号码了,不过第一次会显示全零,下一次就好了。如果通过这个方法打的补丁不好用,或者手机不正常,也可以通过undo patch恢复到以前的状态,对手机不会有什么影响。这个方法只适用于本来应该为空白的单元却已经被写了代码了的情况;如果是修改代码的部分(上面的361E2F:D6B21C BF5403)不相符,像上面改法在apply补丁的时候还会提示内容不符,这时敢不敢改就要看你自己了。
上一条:LG G8000 拍照拍片大测试下一条:把不常用的图片位置做成大铃声
相关文章:1. 苹果将遵守欧盟USB-C充电法:iPhone用上Type-C2. iPhone15 Ultra最新消息动态:将采用钛金属外壳3. Redmi Note 12 Pro支持影像大脑 成像风格等有大进步4. 红米Note 12 Pro+发布 搭载2亿像素HPX旗舰大底5. 鸿蒙harmonyos3.0升级名单 正式版支持机型更新时间出炉6. 红米Note 12 Pro开启预约 配备索尼IMX766+OIS光学防抖7. 华为发布新款MateBook D14 SE 首发价格3999元8. 华为pockets什么时候发布 华为pockets发布会时间9. Redmi K60电竞版发布时间曝光 搭载骁龙8 Gen2处理器10. ios16.1正式版新增了什么功能 新功能升级方法介绍