好多类似的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没有登录的,所以不纠结这个,直接把弹框注释掉,不影响本地使用,
在ida搜字符串“当前软件版本”,就可以找到对应的key值是UTF8_CUR_SOFTWARE_VER,然后在bytecode viewer里搜key值就能找到对应的代码注释掉原来的,重新改下
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!