吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 23627|回复: 96
上一主题 下一主题
收起左侧

[Android 原创] 大富翁4Fun游戏短信内购破解思路

  [复制链接]
跳转到指定楼层
楼主
hafeng45 发表于 2019-3-19 00:01 回帖奖励
本帖最后由 hafeng45 于 2019-3-19 21:47 编辑

    非常荣幸赶上了上周论坛开放注册,弄了个论坛帐号,跟着帖子中的大佬认真学习安卓app破解。正好手机上有个大富翁4Funapp,这个是n年前的游戏了,原本只是想下载来怀旧的,没想到里面有移动短信内购,看着不爽,正好拿来练练手。
   

    1.  破解前先找到我们要查找的短信支付相关字符串。先把手机调飞行模式,或者用安全软件把该游戏的发送短信权限屏蔽,这一步很重要,免得接下来造成财产损失!然后手机上运行游戏,打开游戏的内购,这里的内购分两种,一种是通过游戏内可以挣到的元宝来购买,一种是用短信支付购买。前者随便用个八门神器就能搞定,本文不准备介绍;后者需要发送短信支付(我的rmb啊!),就拿它开刀!随便点开一个“豪小子角色”后面的“购买”按钮,点击“确定”。随便输入一串数字,点击“获取验证码”,此时显示 “请输入有效的移动手机号码”,好记住这几个字!

    2.  androidkiller反编译游戏。尝试搜索“请输入有效的移动手机号码”字符串,搜索成功!继续搜索该字符串对应的id,也就是红圈处的gc_billing_invalid_china_mobile_card”。


    3. 下图中红圈编号124从文件名看,应该是资源ID编号有关的文件,不是重点,先忽略;画圈编号3看文件名cn.cmgame.billing.ui.a.smali,应该是跟游戏界面响应有关的代码,尝试打开它!


        4.这时候来到了a.smali文件,接着点击红圈图标反编译:


    5. 反编译后我们来到了a.class文件,红圈1就是是我们要查找的“请输入有效的移动手机号码”字符串在代码中的位置,我们接下来在代码附近看看有什么线索发现。往上看到红圈2处,此处代码和红圈1处类似,通过工程搜索可知,红圈2是“未找到手机号码,请重试!”字符串。红圈1和红圈2这两个地方都位于函数cn.cmgame.billing.ui.a.bg()函数内,可以猜想,这个bg()函数,很有可能就是一个界面判断移动支付是否成功的判断函数。继续往下看几行,看到红圈3处“this.br.onBillingFail(this.bo); !英文还凑合的伙伴应该可以看出来,这个英文单词可能是一个“支付失败”函数,函数被本类的br成员变量调用。


    6. 看看这个br成员变量到底是啥玩意儿。在本界面查找到br成员变量,发现他是一个GameInterface.BillingCallback()类型的的成变量,从名称大概可以猜测,这可能是一个移动支付有关的接口!点击红圈处横线,跳转到GameInterface.class中。   
     

    7.  这时候我们来到了GameInterface.class,看到红圈处3个地方,说明这个GameInterface.BillingCallback是一个interface接口,里面有三个函数onBillingFailonBillingSuccessonUserOperCancel,这三个函数从字面意思分析应该分别对应支付失败、支付成功、支付取消。因为是interface接口,所以肯定要在其他某些地方进行接口实现,我们再联想到我们之前第5点a.class中的“this.br.onBillingFail(this.bo);”可以看出来,在a.class中的br成员变量实现了该接口。


    8. 所以接下来我们回到a.class中找到br成员变量的定义,发现br确实通过匿名内部类的形式实现了GameInterface.BillingCallback接口。其中onBillingFailonBillingSuccess函数参数、返回值都一样,只有名字不同,所以我们下一步的思路就是打开br成员变量所在的mali文件,直接用onBillingSuccess函数体中的smali代码替换掉onBillingFail函数smali代码,具体替换过程就不说了, br成员变量所在的smali文件即a$11.smali$是匿名内部类的意思。


    9. 经过上一步的改动,onBillingFail()函数实际上已经变成了onBillingSuccess函数,还记得第5步中提到的bg()函数吗,接下来,我们只要在bg()函数开始处加一个调用onBillingFail或者onBillingSuccess函数并直接返回就大功告成了。开始动手!回到br()函数所在的a.smali文件中,找到bg()函数开始标记,并把后面的onBillingFail();return;对应的smali代码复制黏贴过来。


    10. 以上所有步骤完成后记得保存所有修改->编译->安装,回到游戏,点击购买,输不输手机号码都行,直接点确认,购买成功!      

    应坛友要求附上未破解游戏下载链接:https://pan.baidu.com/s/1fgYRQ2i3rn3Ef8IhpNMhkQ     提取码:3kty
    破解工具为AndroidKiller,在论坛爱盘里有:https://down.52pojie.cn/Tools/An ... idKiller_v1.3.1.zip

   

免费评分

参与人数 19吾爱币 +20 热心值 +19 收起 理由
doushaofei + 1 + 1 我很赞同!
Zeno___Lee + 1 + 1 感谢分析
qtfreet00 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
asongElson + 1 + 1 谢谢@Thanks!
snccwt + 1 + 1 谢谢@Thanks!
bozzs + 1 + 1 用心讨论,共获提升!
labist + 1 用心讨论,共获提升!
Diablita + 1 非常感谢楼主分享.还有软件练习真好
饮源 + 1 + 1 谢谢@Thanks!
lingdianlink + 1 + 1 我很赞同!
h1825052587 + 1 + 1 我很赞同!
测可2335 + 1 + 1 用心讨论,共获提升!
qaz359629214 + 1 我很赞同!
deepin0802 + 1 + 1 热心回复!
zg17j1cxw2k + 1 我很赞同!
TimApple + 1 + 1 用心讨论,共获提升!
zhuguanhang + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
羊肉串 + 1 + 1 非常清晰,我这个小白都能看懂,谢谢
RNichi + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| hafeng45 发表于 2019-3-19 19:10 |楼主
涛之雨 发表于 2019-3-19 08:00
楼主这个方法有时候会有问题。。。
如果调用的时候传进的参数类型或数量不相同
直接就无法保存了。。。

      是的。
      不过破解的关键其实就是找到内购函数位置,再深入一点的话,摸清大概的内购调用过程。这些如果剖析明白了,具体操作起来的话可以有很多种方法,不拘泥于文章所提方法。只是因为这个游戏刚好参数类型和数量包括返回值都一样,所以这个直接复制内购成功函数的方法比较简单粗暴,新手也比较容易上手并看的懂。
      假如参数的类型和返回数量不同,问题也不大,内购成功或者失败势必要有一个判断的位置,不改内购函数你可以改判断流程。再不行的话既然内购函数都暴露在你面前了,只要对比一下内购成功和内购失败两个函数的实现的不同地方,大不了直接smaili重写。

免费评分

参与人数 1吾爱币 +1 收起 理由
labist + 1 谢谢@Thanks!

查看全部评分

头像被屏蔽
推荐
龙林小子 发表于 2019-3-19 07:43
沙发
jlkk8 发表于 2019-3-19 00:17
3#
学会爱自己 发表于 2019-3-19 00:41
感谢分享!
4#
yoyo221 发表于 2019-3-19 00:43
学习了,感谢大佬,一会去试一下
5#
yzy9952 发表于 2019-3-19 01:01
待会去试下,谢谢分享
6#
陈世界 发表于 2019-3-19 01:18
很好,多谢交流
7#
sr100fen 发表于 2019-3-19 01:30
多谢交流
8#
逸小飞 发表于 2019-3-19 07:32
有空去试试 ,正好下载了这个游戏
9#
我自有分数 发表于 2019-3-19 07:42
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表