本帖最后由 jazk2004 于 2017-11-4 16:05 编辑
从taptap上下载的,网址https://www.taptap.com/app/52747
评分挺高,自己也玩了一会儿,但是在第2章就过不去了,然后逛咋们论坛看到有人发布已破解版内购的(但是没有过程),于是就想自己手动试试吧,
工具:
MT管理器2
taptap客户端
【说明】:试着在电脑上用安卓模拟器打开游戏,点击购买,但是就一直卡在那里转圈,原因可能是没安微信,觉得还是在手机上改方便吧,嘿嘿
------------开始--------------------
先从taptap客户端下载并安装,打开游戏跳过教程,来的“魂商人”这里,
购买提示如下图:
点击取消后如下图提示:
然后用MT管理器打开游戏,选择“查看”,然后点击“classes.dex”,选择"Dex编辑器++",如下图:
在“搜索”页面搜索“失败,这里一般是根据刚才点击购买后,返回的错误信息来搜索的,常用是“支付成功”、"支付失败"、“成功”、“失败”等等,一次搜不出来,就换其他关键词搜索,下图是搜索后的界面:
这里,看到有一个【wxpay】,很明显就是用的微信支付,点击这个打开后,就需要找找具体的支付结果返回的方法了,常用的破解内购有许多方法,不同的游戏,最好是看情况而定用哪一种,这里看到有许多方法,其中也有pay方法,但是我觉得还是修改CallbackPay和CallbackQuery(因为不确定是修改哪一个才能成功,所以就都修改)比较快一些(根据论坛前辈的经验来看的,所以要多逛论坛了😄)看下图:
CallbackPay的关键代码及修改注释说明:
[Java] 纯文本查看 复制代码 .line 116
#if-eqz p1, :cond_0 #这个是判断成功还是失败的关键点,简单粗暴点把这里用#号注释掉
.line 118
iget-object v0, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strUnityObjectCallback:Ljava/lang/String;
const-string v1, "A2U_Pay" #这里看出是支付成功的提示
iget-object v2, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strOrderID:Ljava/lang/String;
invoke-static {v0, v1, v2}, Lcom/unity3d/player/UnityPlayer;->UnitySendMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 124
:goto_0
return-void
.line 122
:cond_0
iget-object v0, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strUnityObjectCallback:Ljava/lang/String;
const-string v1, "A2U_PayFail" #这里看出是支付失败的提示
iget-object v2, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strOrderID:Ljava/lang/String;
invoke-static {v0, v1, v2}, Lcom/unity3d/player/UnityPlayer;->UnitySendMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
goto :goto_0
.end method
CallbackQuery的关键代码及修改注释说明(与上面一样):
[Java] 纯文本查看 复制代码 .line 154
#if-nez p1, :cond_0 #这个是判断成功还是失败的关键点,简单粗暴点把这里用#号注释掉
.line 156
iget-object v0, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strUnityObjectCallback:Ljava/lang/String;
const-string v1, "A2U_Query" #这里看出是支付成功的提示
iget-object v2, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strQueryOrderID:Ljava/lang/String;
invoke-static {v0, v1, v2}, Lcom/unity3d/player/UnityPlayer;->UnitySendMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 162
:goto_0
return-void
.line 160
:cond_0
iget-object v0, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strUnityObjectCallback:Ljava/lang/String;
const-string v1, "A2U_QueryFail" #这里看出是支付失败的提示
iget-object v2, p0, Lcom/YuanMingwei/ActionDungeon/WXPay;->_strQueryOrderID:Ljava/lang/String;
invoke-static {v0, v1, v2}, Lcom/unity3d/player/UnityPlayer;->UnitySendMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
goto :goto_0
.end method
修改完后一定要记得保存,然后要点击右上角的菜单-->编译,然后选退出,这时就看到mt管理器的页面了,再按一下手机的返回键,提示有变化是否保存,选择保存,就回到打开游戏文件的页面了,
这里需要给文件签名,点击文件,选择 功能-->apk签名,就会生成一个带_sign的apk文件了,把原来的卸载掉,安装这个文件就可以了。
在这里脸厚的请求各位评分一下,我也是刚学安卓逆向的,给点动力吧,谢谢给位了!
|