官方recovery签名验证的破解教程 您所在的位置:网站首页 如何跳过签名验证登录 官方recovery签名验证的破解教程

官方recovery签名验证的破解教程

2023-12-22 19:45| 来源: 网络整理| 查看: 265

下面讲如何破解官方recovery签名验证(这个方法应该是通用的,其他手机可以参考,recovery签名验证破解了,也不用费力编译第三方recovery)

1、从官方ROM里提取recovery.img

2、把recovery.img解出来。。。具体方法可以看沙发。。。我单独拎出来。。。。

3、sbin/recovery 这个二进制执行文件,拷贝到windowsxp里

4、windowsxp安装ida64plus这个软件,这是个反编译软件,我网盘里有一个试用版,功能有限制,这个版本能反编译,但不能保存数据,所以我找到具体改的地方后,再用UltraEdit软件去改的。如果谁有ida64plus这个软件功能不受限制的,请共享下。。。。好东西不要自己留着哦。。。。。

5、用ida64plus这个软件,打开recovery二进制文件,选择ARM cpu,他自动反汇编出所有函数。

 

6、反汇编成功后,系统问你是否看图形模式,回答no,进文本模式,然后搜索文本sign,系统会直接找到签名验证出错的那段代码那里

 

 

7、仔细阅读那段代码,极其他的前后代码,可以发现,系统验证签名共两次,函数是sub_CCE0,这个函数每次返回值在寄存器R0里面。

 

 

看第一个框的代码最后:BL sub_CCE0 调用签名验证函数MOV R6, R0 把返回寄存器R0的值,传输到R6寄存器备用CBZ R0, loc_A7B6 系统判断R0的值,如果是0,就直接跳到loc_A7B6,绿色线这个可以看出,loc_A7B6其实是跳过了再次验证的地方,图中第二个方框。如果R0是1的话,就不跳转,顺序继续执行,相当于再次验证签名,也就是第二个框

第二个框中代码的最后:BL sub_CCE0 调用签名验证函数MOV R6, R0 把返回寄存器R0的值,传输到R6寄存器备用这里没有判断,直接顺序继续执行到第三个框,也就是loc_A7B6

第三个框,也就是loc_A7B6这里:这个框的代码最后:CBZ R6, loc_A7DE 进入这段代码,是判断R6的值(前面两次验证,都把验证返回值保留在R6里),如果是0,就跳到loc_A7DE,也就是第四个框方向,这个方向的代码是安装卡刷包,具体请自己往后看。如果是1,就是最后的红线方向的代码,去那里是显示签名非法,退出程序,那里具体代码请自己往后看。

8、鼠标双点签名验证函数sub_CCE0,软件自动跳到显示这个函数的具体内容,拉到这个函数的最后,可以看到从多个方向来的代码,在结束这个函数前,分别执行了MOVS R0, #0 这个在左边的框内MOVS R0, #1 这个在右边的小框内由此,我们知道,验证函数的返回值,是通过R0寄存器,也印证了前面的代码。

 

9、到这里,只要把MOVS R0, #1这个1改成0就可以了,表示即使签名验证失败也返回0(0表示成功)但我这个试用版ida64plus的软件保存不了,所以,我们先用鼠标点中我们要改的地方,也就是那个1,然后切换标签点“Hex view”,就可以看到要修改地方的具体地址5160

10、用UltraEdit软件打开recovery,找到5160地址,把1改成0保存就可以了,(如果ida64plus能保存就不用这个软件了)把改过的recovery拷回recovery.img解包目录,然后打包,就可以用odin软件刷了。。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有