• Android破解学习之路(五)——Android游戏 割绳子:魔法 + 在游戏加入Toast弹窗提示


    前言:这一期的破解教程,有新的知识内容出现啦!

    这一期破解的游戏是找不到之前的关键字,怎么破解呢?

    破解成功之后,添加一个Toast弹窗提示由XX破解,这操作该如何实现呢?请往下看~

    链接: https://pan.baidu.com/s/1dF8jKdF 密码: 6666

    破解步骤:

    1.试玩,找不到关键字

    由图片可以看出,这是中国移动的咪咕游戏,这款游戏是接入了咪咕游戏基地的sdk,如果你不懂sdk,那么我也不会解释,百度是你的好老师!

    游戏使用了咪咕游戏基地的sdk,其中的smail文件一般都有Billing这个关键字,那么我们试着搜索看看

    2.查找Paycallback关键字

     可以看到,我们经过文件类型筛选之后,还是有许多的结果,这时我们可以再原来的关键字上再加上个pay进行搜索

    嗯,这下子结果就是少了很多了,咪咕游戏这类sdk,关于支付的类名一般都是含有callback,所以我们可以定位到图中的三个含有callback的文件,第一个我就不圈出来了

     我们一个个使用工具去查看其的java伪代码,则可以再次精确定位到ChinaBillingPayCallBack$1这一个文件

    3.理解支付逻辑

    我们查看ChinaBillingPayCallBack$1这个smail文件的伪代码

     

    可以看到,是if与else if的嵌套的分支语句,每个判断都是给i赋值,估计大家看得不太懂,说实话,其实我也不太懂,那个for循环里面有个setResultCode,其中的参数为i,个人觉得这个应该是支付成功的关键代码,问题就来了,我们不知道i等于几时,这个setResultCode才是支付成功,这个时候,我们有什么办法吗?答案很简单,一个个地试,我们将i的值改变,测试APP,就是可以知道i为1的时候,就是会进入支付成功的方法

    回到smail文件中,与之前的java伪代码对比,可以发现v1就是那个i值,之后,就好办了,我们跳过所有的判断语句,修改v1的最后的值进行测试

    PS:const/4 v1,0x1 这个的意思为给v1赋值为1,如果是const/4 v1,0x2,就是给v1赋值为2,我这里只是简单的说明,想要深入的可以百度搜索一下smail中const指令

    我们测试到1,就会发现支付已经成功了,这也算是成功破解了,不过,我觉得还是得再分析分析这smail文件

    4.破解思路

     我们分析一下上述的smail文件,首先,v1接收参数p1的值,之后,判断参数p1与v2的值,相等的话也就是v1为1,之后向下执行,从前面我们知道,v1为1的时候,就是支付成功的代码,我们可以删除掉这一行的判断从而实现破解的功能,不相等的话就是跳转到cond_1,记住末尾的cond_0和goto_0这两个,之后会提到

     我们从上面跳转到了cond_1这里,v2就是被赋值为3了,之后,参数p1又是接着与v2比较,相等则是往下执行,也就是给v1赋值为3,跳转到goto_0,也就是之前上面说的地方,不相等就是跳转到cond_2,以此类推,大家应该能理清楚大概逻辑了吧

    PS:大家可能不知道if-ne这个语句的作用,可以直接使用鼠标放在上面,之后就会浮出提示

     

    两种方法破解:

    上面都有提及到了,这里写个总结

    1.删除第一个判断语句,不跳转到之后去判断,,v1就是为1

    2.在所有判断结束之后,给v1赋值为1

    5.增加Toast提示

    接下来就是新学的内容了,重点来了!!

    首先,先确定开始的界面是哪一个activity,我使用了当前activity 这款APP,之后运行游戏,左上角就是会有提示,我们可以知道CTRMActivity这个

    第二步,我们需要找到这个activity对应的smail文件,直接搜索(如果你不嫌麻烦的话,可以找包名,依次地寻找)

    我们在a文件夹那里,右击,之后选择打开方式->打开文件路径

    第四步,新建一个txt格式文件,修改文件名为craker,之后把扩展名改为smali(呃,好像发现我之前都是写成了smail,大家注意下啊,我就不修改了

    返回到Androidkiller中,点击右边的刷新按钮

    之后,你就发现有craker这个smali文件了,打开它,写上下列代码,可以看到,有个toast的字符串,我们只需要将这里修改成我们想要Toast提示的信息,如果是中文的话,需要转换成Unicode,直接使用Androidkiller自带的工具转换吧,前面几篇也是有说过,我就不多说了

    .class public Lcrack;
    .super Ljava/lang/Object;
    .source "craker.java"
     
    .method public static toast(Landroid/content/Context;)V
        .locals 2
        .prologue
     
            const-string v0, "by stars-one"
     
            const/4 v1, 0x1
     
            invoke-static {p0, v0, v1}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
     
            move-result-object v0
     
            invoke-virtual {v0}, Landroid/widget/Toast;->show()V
     
            return-void
    .end method

     最后,我们在CTRMactivity中的onCreate方法里写上调用的代码,就大功告成了

    invoke-static {p0}, Lcrack;->toast(Landroid/content/Context;)V 

    诶,等等,onCreate方法呢?没有??擦嘞,不可能。。好吧,我们找错了,我们再运行一遍游戏,我看到了一个ChannelSplash,就决定是它了,去Androidkiller找找看(下面的图片是我已经修改成功了的图片,请忽略弹出的Toast

     这次找对了,这里有onCreate方法,之后的步骤与上面的一样,这里我就不多说了,注意一下最后调用代码添加的位置,还有记得删除掉之前在CTRMactivity中添加的代码

    成功了,不过想到了activity的模式,好像onstart方法也是可以用,刚才的那个CTRMactivity就是有一个onstart方法,我把前面的删除,之后按照之前的步骤,尝试在CTRMactivity中里面写上了调用的那一段代码

    之后,测试的时候,发现成功显示

     

     6.删除权限,测试

    我们可以把这个APP的名字更改了,这样显得比较高端哈!

    直接搜索割绳子就行了,之后进入到string文件,修改app_name

    这里不得吐槽一下,这个游戏好像删除发送短信会出错,进入游戏的时候提示应用已停止,暂时还不知道解决,有哪位大神看到这里能知道如何解决这个问题,希望能够告知~~感激不尽!!

    还有,悬浮窗广告还不知道怎么破解,有大神能教教我吗~~

  • 相关阅读:
    Django REST framework
    django写入csv并发送邮件
    GC收集器ParNew&CMS
    编写高质量的JavaScript代码
    Vue3.0 declare it using the "emits" option警告
    vue 3.0 router 跳转动画
    vue3.0 element-plus 表格合并行
    element-plus 时间日期选择器 el-date-picker value-format 无效等
    vue3.0中使用,一个元素中是否包含某一个元素。
    vue axios ajax 获取后端流文件下载
  • 原文地址:https://www.cnblogs.com/stars-one/p/8151182.html
Copyright © 2020-2023  润新知