运行
开始游戏界面
注意
夜神模拟器完全没进入到开始页面就崩溃了
雷电还能多用一会,能开局
但是建议此APK不要下载练习了,本文就看看吧,或者用其他APK文件练习
目的
AndroidKiller
字符串搜索
将中文注入后转为UniCode后搜索:
建议搜索关键字“购买”、“支付”、“付费”:
JavaDecompiler
查看源码,在Java代码中找到关键函数和逻辑,可以使用Ctrl+F查找字符串:
修改Smali
注意到有这样一个字符串“恭喜您达到消费上限,自动开通尊享VIP,您可以免费购买任何道具”,这是符合破解目的的函数所在。
那么思路就是,当支付/购买失败时,都运行成功的逻辑——“payResultSuccess”函数。
1️⃣替换
替换支付结果。
支付结果一共有三种,取消(“;->payResultCancel”),失败(“;->payResultFalse”),成功(“;->payResultSuccess”):
将取消和失败都替换为成功。
操作
2️⃣修改跳转
java代码

if (!tanLibao()){payResultFalse();}else if (MessageUtil.getInstance().free.equals("1")){payResultSuccess();}
smali代码

invoke-virtual {p0}, Lcom/mydefinemmpay/tool/MymmPay;->tanLibao()Zmove-result v2if-nez v2, :cond_3.line 958invoke-virtual {p0}, Lcom/mydefinemmpay/tool/MymmPay;->payResultFalse()Vgoto :goto_0.line 962:cond_3invoke-static {}, Lcom/mydefinemmpay/tool/MessageUtil;->getInstance()Lcom/mydefinemmpay/tool/MessageUtil;move-result-object v2iget-object v2, v2, Lcom/mydefinemmpay/tool/MessageUtil;->free:Ljava/lang/String;const-string v3, "1"invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Zmove-result v2if-eqz v2, :cond_4.line 963invoke-virtual {p0}, Lcom/mydefinemmpay/tool/MymmPay;->payResultSuccess()V
不等于改为等于
#如果v2不等于0则跳转到:cond3if-nez v2, :cond_3#if-nez改为if-eqzif-eqz v2, :cond_3
回编译
smali代码修改
为了让效果明显一点,在“doPaySuccess”函数内把字符串加了点信息:
保存修改
编译
重新运行破解版

