一.注意签名校验的使用函数
getPackageManager() 得到包管理结构体
getPackageName() 得到包名
getPackageInfo()->signatures 得到apk签名
signatures ->hashCode() 得到签名的哈希值
二.逆向一个有签名校验的app-----霸哥磁力搜索(使用AndroidKiller重新签名后应用会闪退)
下载链接:https://cloud.189.cn/t/buYjEnaQbuye (访问码:e0ts)
步骤
①使用AndroidKiller打开apk,找到入口点com/bug/bt/MainActivity,反汇编java代码找到一个自定义函数调用了相关签名校验函数
② 经过分析将if去掉
在smali文件中将eq改成ne
③ 改完后编译回模拟器看啥都没显示且会出现问题,所以还有签名校验位置没改
④经过分析在OnCreate又找到另一个有问题的函数bug(),该函数调用了自定义so库
⑤IDA打开该自定义的so文件,找到bug()函数,发现改函数里有一个getSignHashCode()获取签名哈希值,其里面有签名校验
⑥ 直接将getSignHashCode() nop掉(使用的时IDA7.0永乐汉化版,里面含有快速修补神器),保存替换到AndroidKiller编译
⑦ 再试水,完美!!!