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
.prologue const-string v0, "by stars-one" const/ 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

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

Android破解学习之路(五)——Android游戏 割绳子:魔法 + 在游戏加入Toast弹窗提示的更多相关文章
- Android破解学习之路(十五)—— 【Unity3D】洛菲斯的呼唤(Lophis roguelike)无限金币(道具)的实现 破解
前言 之前玩月圆之夜玩的挺high的,最近又找到了个与月圆之夜类似的卡牌游戏,游戏名为Lophis roguelike,中文翻译名洛菲斯的呼唤. 但是这个与月圆之夜有所不同,如果失败了,只能从开头重新 ...
- Android破解学习之路(十四)——【Unity3D】王牌大作战破解
一.前言 今天带来的是王牌大作战的破解教程,游戏下载的话,我是直接去TapTap官网下载的 支付宝内购破解用老套了,今天学点破解的新花样吧!! 二.支付宝内购破解 支付宝的内购破解已经很熟悉了, 直接 ...
- Android破解学习之路(一)——简单的登录破解
最近突然心血如潮开始学了Android破解,初入门,便是将经验记录下来. 准备工作: 1.一个登录简单APP 在我们破解之前,我们需要做一个简单的登录APP,输入相应的账号与密码便是弹出登录成功的对话 ...
- Android破解学习之路(三)——Android游戏 切水果破解
经过前两篇破解教程,想必大家也是明白了破解的简单流程了. 先对APP进行试用,了解APP运行的大概流程,之后从APP中找出关键字(一般的关键字差不多都是支付失败),之后使用Androidkiller进 ...
- Android破解学习之路(四)——Android游戏 3D摩托飞车破解
经过前面三期的破解,想必大家已经非常熟悉破解的流程,这一篇也算是练手项目,我们继续来练习吧 apk下载地址:链接: https://pan.baidu.com/s/1sl3b3R3 密码: 6666 ...
- Android破解学习之路(六)——Android游戏 方块冒险 破解
前言: 可能大家看到标题会有些懵逼,以为我发错了,这应该是五才对吧,其实,五我已经发了,不过被管理大大移出首页了,不知道这一篇是不是也会是同样的命运.. 今天所写的是关于支付宝内购的破解 原版 链接: ...
- Android破解学习之路(二)——Android游戏 滚动的天空破解
经过上一期的破解教程,相信大家跟我一样都是对破解是初入门,我们破解的目的是什么? 赚钱吗?百度上一大堆破解版的应用,破解的人有赚到钱吗?实实在在的说,其实也是方便自己而已. 玩个游戏,感觉过不去了,来 ...
- Android破解学习之路(九)—— 练手破解游戏集合
1.魔塔50层 https://www.taptap.com/app/48859 选择需要购买的东西,之后在支付宝支付界面点击取消,即可支付成功 2.布布合丁丁 https://www.coolapk ...
- Android破解学习之路(十二)—— GP录像汉化过程及添加布局
前言 最近闲着发慌,想起了很久之前就想汉化的一款录像APP,APP大小不到1MB,但是好用,本期就给大家带来汉化的基本步骤以及如何在APP中添加我们汉化的信息 汉化思路 查找关键字 关键字挺好找的,由 ...
随机推荐
- 但未在用户代码中进行处理 具有固定名称“Oracle.ManagedDataAccess.Client”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。
这是使用ODP.NET链接Orcl数据库常见错误,需要配置系统环境变量. 解决方法如下: 找到以下路径文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\ ...
- Android Imageview 图片居左居右,自定义圆角
android:scaleType="fitStart" 图片靠左不变形显示, android:scaleType=”fitEnd” 图片靠右显示,不变形. 半透明andr ...
- 十五、Hadoop学习笔记————Zookeeper客户端的使用
timeout表示会话超时时间,zookeeper靠与客户的心跳来判断会话是否有效(单位毫秒), -r为只读,表示zookeeper如果与半数以上服务器失去连接则会停止服务,如果有-r参数,则会继续保 ...
- cmd markdown 使用教程
cmd markdown 使用教程 tags: 自制教程 李卓伦 目录: [TOC] 一.简介与安装 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,Cmd M ...
- 2712:细菌繁殖-poj
2712:细菌繁殖 总时间限制: 1000ms 内存限制: 65536kB 描述 一种细菌的繁殖速度是每天成倍增长.例如:第一天有10个,第二天就变成20个,第三天变成40个,第四天变成80个,… ...
- 2017最新PHP初级经典面试题目汇总(下篇)
17.isset.empty.is_null的区别 isset 判断变量是否定义或者是否为空 变量存在返回ture,否则返回false 变量定义不赋值返回false unset一个变量,返回false ...
- 网页设计——7.css的入门
css的介绍 div+css的设计: 什么是div? 理解示意图: 实例操作: 这里就要用到div+css的布局操作 先写一个html文件,见下图: <html><head>& ...
- arguments.callee的临时指向特性
function r(){ alert('BBB'); } var a = { f: function(){ alert('AAA'); arguments.callee = r; } }; 弹出的都 ...
- Android OpenGL ES(八)----纹理编程框架
1.把纹理载入进OpenGL中 我们的第一个任务就是把一个图像文件的数据载入到一个OpenGL的纹理中. 作为開始.让我们又一次舍弃第二篇的框架.又一次创建一个程序,新建一个util工具包,在该包下创 ...
- 十条很实用的jQuery代码片段
本文转自:http://developer.51cto.com/art/201604/509093.htm 作者:核子可乐译来源:51CTO 原文标题:10 jQuery Snippets for E ...