分享一方法破解某厂商游戏实现不弹支付提示窗

 佚名文
发布时间:2025-07-06 05:22

本帖最后由 B6B6B6 于 2015-3-15 12:08 编辑

如果觉得不错的话,评分支持下吧。
破解一个游戏实现不弹支付提示窗,甚至那个厂商的游戏。游戏名:滑雪大冒险:探险时光。下面是我破解时的分析过程,可能对像我一样的有用。
游戏我是从移动MM下载的,一开始我以为只需用MT文件管理器改onbillingFinish方法的代码就可以了。改完后安装游戏,点购买后出现失败。我不甘心,再用MT找到onbillingFinish方法发现可疑代码onSuccess()V和onFailed()V如图

1.png (117.94 KB, 下载次数: 11)

下载附件

2015-3-11 22:58 上传


然后我就用MT搜代码onFailed()V然后看到跟pay有关一个一个改成onSuccess()V,好了保存,打包,签名,安装,进游戏,点内购,发现点购买,弹出“初始化”和购买成功,如图

2~01.png (355.01 KB, 下载次数: 11)

下载附件

2015-3-11 22:58 上传


那么问题来了,支付提示窗呢?
带着疑问,我用MT搜"初始化"字符串,找到了一个类,发现在初始化下面有个onSuccess()V没错这个就是我乱改的那个,这个就是没弹窗的原因。再看看上面的代码,有手机卡的字眼,如图

3.png (170.65 KB, 下载次数: 9)

下载附件

2015-3-14 12:42 上传


于是我猜这些是判断sim卡类型。那么能否这些代码执行前就执行onSuccess()V从而达到无sim卡和三网都可付费呢?然后我返回,看了下类名是com/yodo1/sdk/game/Yodo14GameSmsPay$1那么可以判断肯定有com/yodo1/sdk/game/Yodo14GameSmsPay的类,用MT打开C类列表找到com/yodo1/sdk/game/Yodo14GameSmsPay这个类。点开一看有个startpay方法,点进startpay方法发现有个onCanceled()V没记错的话Canceled这应该是取消的意思,把他改成onSuccess()V再把上面的if代码注释掉或删除,保存,签名,安装,点购买,如图

4~01.png (345.56 KB, 下载次数: 9)

下载附件

2015-3-13 19:01 上传


这次没弹初始化了,这说明确实是先执行startPay方法的。最后我把手机卡拆了,开机进游戏,点购买,照样成功,这就达到目的无卡也能购买了。之后试了这个游戏厂商的其他游戏,一样有startPay方法,而且改后点购买不弹任何窗,例如另一个滑雪大冒险和喵星人大战就是这样,但是这个 滑雪大冒险:探险时代 会弹购买成功。

至此总结出这个厂商的游戏应该都可用MT搜startPay方法或者直接找到com/yodo1/sdk/game/Yodo14GameSmsPay这个类的startPay方法,然后改onCanceled()V为onSuccess()V以防万一把那两个if代码注释掉,而且去掉发短信权限。下面是startPay方法的代码,我写的可能比较啰嗦,还请各位见谅。

invoke-static {} Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
iget-wide v2 v4 Lcom/yodo1/sdk/game/Yodo14GameSmsPay;->prePayTime:J
sub-long/2addr v0 v2
const-wide/16 v2 0x320
cmp-long v0 v0 v2
if-gez v0 :label_19#这里应该注释掉或删除
if-eqz v7 :label_18#这里应该注释掉或删除
invoke-interface {v7} Lcom/yodo1/sdk/game/Yodo14GameSmsPayListener;->onCanceled()V#改这里为onSuccess()V
label_18:
return-void
label_19:
invoke-static {} Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
iput-wide v0 v4 Lcom/yodo1/sdk/game/Yodo14GameSmsPay;->prePayTime:J
invoke-static {} Lcom/yodo1/sdk/game/Yodo14GameBasic;->getInstance()Lcom/yodo1/sdk/game/Yodo14GameBasic;
move-result-object v0
invoke-virtual {v0} Lcom/yodo1/sdk/game/Yodo14GameBasic;->getMainHandler()Landroid/os/Handler;
move-result-object v0
new-instance v1 Lcom/yodo1/sdk/game/Yodo14GameSmsPay$1;
invoke-direct {v1,v4,v5,v7,v6} Lcom/yodo1/sdk/game/Yodo14GameSmsPay$1;-><init>(Lcom/yodo1/sdk/game/Yodo14GameSmsPay;Landroid/app/Activity;Lcom/yodo1/sdk/game/Yodo14GameSmsPayListener;Ljava/lang/String;)V
invoke-virtual {v0,v1} Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
goto :label_18
这里再详细的说说破解过程吧,首先打开MT文件管理器,点软件,点classes.dex文件,选择编辑代码,然后搜方法startpay如图√选不区分大小写和搜索方法名

a.png (84.07 KB, 下载次数: 10)

下载附件

2015-3-14 12:11 上传


接着点进搜索到的类,点startPay方法。如图

b.png (130.05 KB, 下载次数: 11)

下载附件

2015-3-14 12:22 上传


接着按照图中提示修改如图

c.png (130.44 KB, 下载次数: 10)

下载附件

2015-3-14 12:12 上传

d.png (60.45 KB, 下载次数: 7)

下载附件

2015-3-14 12:12 上传


返回保存,会提示是否更新到压缩文件中,点是,保存好后,别忘了去掉软件的发短信权限,然后签名。OK破解完毕。







 

免费评分 参与人数 4威望 +1 热心值 +3 理由
885     + 1   我很赞同!  
想飞的小闹     + 1   我很赞同!  
Hmily   + 1     感谢发布原创作品,吾爱破解论坛因你更精彩.  
spguangz     + 1   谢谢@Thanks!  

查看全部评分

首页
评论
分享
Top