本文为看雪论坛优秀文章
看雪论坛作者ID:pangzhen
好多类似的vip
一
去除vip
有两种架构的so,v7a对应32位,v8a是64,现在几乎都没有32位的手机,直接改v8a就够了,v7a的修改方法也是一样。
ida64 加载v8a的libovitalMap.so,直接搜vip。
再搜isvip,进入函数,可以看到变量v9的最小值是0,只要把变量v2改为0就可以,v2对应的是寄存器w19。
v9和v2的比较是在这里:
赋值在这里:
在线汇编转机器码
然后修改
就变成vip了。
其他几个vip函数也是类似这样。
二
修改签名校验
修改后要重新打包签名,不是原来的签名证书则md5自然不同,so做了签名校验,md5不一样的话地图显示不出来,所以还要改签名校验。
用keytool看下原来的签名,md5是8D开头。
搜字符串“getPackageInfo”,可以看到在CheckApkSigMd5这个函数里校验,签名相关的函数都在一起,而且md5也在这里,直接把md5换成自己签名证书的就可以了。
是在这里校验,所以替换为自己打包的签名证书md5。
三
去除错误弹框
现在已经把vip的限制都去掉,之前的提示购买vip弹框没有了,功能正常使用,但遇到一个问题是主界面右上角的相机可以正常使用,拍完照片或录像后会弹出“未知错误”的对话框,所以要找到弹框的原因然后才能去掉。
那就搜“未知错误”,在安装包的res里搜不出这个字符串,用bytecode viewer在smali代码里也没找到,那就只有在so里了。
既然是在so里,显然是通过jni接口取字符串,随便点开几个smali文件看下,都是调用com.ovital.ovitalLib.h.i这个函数取字符串,用Android studio调试一下,在这个函数打个断点,看下哪里用了“未知错误”这个字符串然后弹出这个错误框。
调试后可以找到代码在这里,分析弹框原因是NewPhotoSaSign返回0,y50.j3是弹出对话框。这个NewPhotoSaSign貌似跟登录信息有关,毕竟是假vip没有登录的,所以不纠结这个,直接把弹框注释掉,不影响本地使用。
四
添加crack信息
在ida搜字符串“当前软件版本”,就可以找到对应的key值是UTF8_CUR_SOFTWARE_VER,然后在bytecode viewer里搜key值就能找到对应的代码。
注释掉原来的,重新改下。
在so里搜这个页面的一些字符串,发现是字符串是整个HTML页面,那就直接在字符串里面改就行。改动比较多,用010editor方便,可以直接写字符串。
链接:https://pan.baidu.com/s/1s7qCwj5qBTfAIMhhVsP_Yg
密码:38iy
仅供研究。
看雪ID:pangzhen
https://bbs.kanxue.com/user-home-330052.htm
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!