安卓逆向从入门到入土之突破签名验证

最近在跟着网上的教程学习android逆向,就用教程里的demo,跟着教程研究一下demo中的签名验证,操练起来~。

反编译之,可以看出签名验证check函数写在libJniTest.so中:

 IDA打开libJniTest.so,找到check函数,双击查看check方法:

看到中文乱码。通过alt+a设置编码

获取签名后判断,不正确则执行loc_F62,程序退出:

转换为图形视图,会更直观:

判断签名,签名正确通过BNE跳转到左侧视图 ,em...有必要查一波BNE跳转指令:

所以要想让程序在签名错误的情况下执行,就需要让R0=0的情况下跳转,所以可以使用BEQ指令:

可以查看到BEQ的十六进制为D0,所以我们十六进制编辑BNE的D1,改为D0:

可以看到指令已经被修改为BEQ:

保存修改,重新编译apk文件即可。

PS:1,F5无法查看源代码除了程序有静态分析保护外,建议使用32位IDA,64位无法使用F5;2,重新编译报错可能是apktool的问题。

  over~

原文地址:https://www.cnblogs.com/2rsh0u/p/10710119.html