上一篇 《教我兄弟学Android逆向02
破解第一个Android程序
》我带着你破解了我们自己编的一个小程序 里面我分析并讲解的一些smali语法你都记住了 给你布置的课后作业你发给了我 我看后觉得你
完成的
不错 结合着前两篇给你写的教程的基础上 我认为你可以开始今天的课程了。
要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学! --致选择
说明:教我兄弟学逆向这系列课程是一对一教我兄弟的 在逆向方面他是一个小白 所以教程我会写的很详细 如果你也和他一样也是一个小白 对Android逆向是0基础 但是想学习Android逆向知识 那么请从第一篇《教我兄弟学Android逆向01 编写第一个Android程序 》 开始看 这里教程是同步跟新的 更新的速度我会根据我兄弟-旭的学习速度而定。
今天为你带来的是一篇实战教程 这个教程很有意思 就是破解小游戏 下面开始进入实战:
一.今天教程所用到的例子是吾爱名为:非己非人写的一篇内购破解教程 你现在的任务是跟着他写的教程去把这个游戏破解掉
注意他那个帖子原版apk链接失效了 练习用下面这一个
帖子链接:
https://www.52pojie.cn/thread-642371-1-2.html
原版apk链接:
链接:http://pan.baidu.com/s/1kUJiREB 密码:4fld
二.现在你已经跟着上面的帖子完成了对此游戏的破解 下面我给你带来第二种破解方法
在先进行第二种方式破解之前 结合着你对上面那篇教程的理解 我有个问题要问你 上面那篇文章破解的思路是什么?
正常购买道具流程:
首先我手机上安装了一个游戏 但是游戏里面好多道具都是收费的 游戏正常逻辑是 我点击一个道具 点击购买 弹个框 这个框里面会问:你确认花费xx金币购买此道具吗?然后下面有两个按钮 一个确认一个取消 我点击确认游戏扣费 然后道具购买成功
破解目的:
在不花费话费 或者金币的情况下 让道具购买成功
既然购买流程和我们的破解目的都清楚了 那么破解思路也就跟着来了:
(1)我点击取消让道具也能购买成功 是不是就把游戏给破解了
(2)在购买失败,扣费失败的情况下 让道具购买成功 (这个也就是为什么我们要搜索"失败"的原因)
1. 用AndroidKiller打开我们的原版apk 搜索字符"失败" 点搜索框下面的aA 文本转Unicode 选择搜索范围 点击搜索,找到购买失败 鼠标滑轮向上滑动 这里看到购买失败这四个字在payResultFalse方法里面
![《教我兄弟学Android逆向03 破解第一个Android游戏 》_第1张图片](http://img.e-com-net.com/image/info8/e4ea7327f66840fe9da04cb6090d9c47.jpg)
![《教我兄弟学Android逆向03 破解第一个Android游戏 》_第2张图片](http://img.e-com-net.com/image/info8/2af4aa4830f34ebf87360d35cd5658ec.jpg)
2.点击小咖啡图标将当前smali代码转换成java代码
![《教我兄弟学Android逆向03 破解第一个Android游戏 》_第3张图片](http://img.e-com-net.com/image/info8/8427c2f3452b4d62a173112b88b64d69.jpg)
3.这里就是支付失败所执行的方法了 可以看到这个方法下面是payResultSuccess()这个方法 这个是支付成功的方法 还有payResultCancel 支付取消的方法
非己非人写的那篇教程 是把支付失败方法里面的smali内容替换成支付成功方法里面的smali内容 来达到破解的目的
我们这里换一种破解思路,我去找哪里调用payResultFalse方法 然后我把这个方法名字改成支付成功方法的名字 是不是也可以达到游戏破解的目的?
4.搜索payResultFalse 找到如图位置 这里有两种破解方式 一种是把pswitch_1改成pswitch_0 另一种是把payResultFalse改成payResultSuccess 都可以达到游戏破解的目的
要求:理解switch语法 不懂的地方自己去百度 本节课的例子自己跟着去练习
![《教我兄弟学Android逆向03 破解第一个Android游戏 》_第4张图片](http://img.e-com-net.com/image/info8/ccce6e3d0d4643d389124a056246765b.jpg)
5.总结
本节课通过实例带你用两种方式破解了第一个Android游戏 第一种是非己非人写的把购买成功里面的smali代码替换到购买失败函数中去 第二种是在购买失败函数调用处 改变switch语句达到破解的目的 你在练习完本节课例子的最后我给你留了一个任务:自己用第三种方式完成对此游戏的破解。
当然教程讲的并没有这么详细 破解过程中遇到不懂得自己去百度 再不懂的就来问我 学习逆向就是这样 学不会就会感觉迷茫 但是不用怕 记住多迷茫几次就都学会了 每节课布置的课后作业一定要完成 课后作业都不做的话 那我的帖子你也不用继续跟了 学而不思则罔,思而不学则殆 ,不仅要完成还要能理解 本节课到此结束 下节课我将带着你去动态调试smali代码
课后作业:
跟着教程完成并破解以下两个游戏 注:课后作业
一定
要做
1. https://www.52pojie.cn/thread-632178-1-2.html
滚动的天空
2. https://www.52pojie.cn/thread-620244-1-1.html
火柴者联盟