会飞的丑小鸭 发表于 2017-10-23 17:36

《教我兄弟学Android逆向03 破解第一个Android游戏 》

本帖最后由 会飞的丑小鸭 于 2018-7-19 10:23 编辑

上一篇 《教我兄弟学Android逆向02破解第一个Android程序》我带着你破解了我们自己编的一个小程序 里面我分析并讲解的一些smali语法你都记住了 给你布置的课后作业你发给了我 我看后觉得你完成的 不错 结合着前两篇给你写的教程的基础上 我认为你可以开始今天的课程了。

要么学!要么不学!学和不学之间没有中间值 不学就放弃,学就要去认真的学!    --致选择

说明:教我兄弟学逆向这系列课程是一对一教我兄弟的在逆向方面他是一个小白 所以教程我会写的很详细   如果你也和他一样也是一个小白 对Android逆向是0基础 但是想学习Android逆向知识 那么请从第一篇《教我兄弟学Android逆向01 编写第一个Android程序 》 开始看 这里教程是同步跟新的 更新的速度我会根据我兄弟-威的学习速度而定。
今天为你带来的是一篇实战教程这个教程很有意思就是破解小游戏 下面开始进入实战:

一.
今天教程所用到的例子是吾爱名为:非己非人写的一篇内购破解教程 你现在的任务是跟着他写的教程去把这个游戏破解掉
注意他那个帖子原版apk链接失效了 练习用下面这一个
帖子链接:
https://www.52pojie.cn/thread-642371-1-2.html
原版apk链接:
链接:https://pan.baidu.com/s/1pMrYft5 密码:lper

二.
现在你已经跟着上面的帖子完成了对此游戏的破解 下面我给你带来第二种破解方法
在先进行第二种方式破解之前 结合着你对上面那篇教程的理解 我有个问题要问你上面那篇文章破解的思路是什么?

正常购买道具流程:
首先我手机上安装了一个游戏 但是游戏里面好多道具都是收费的 游戏正常逻辑是 我点击一个道具 点击购买 弹个框 这个框里面会问:你确认花费xx金币购买此道具吗?然后下面有两个按钮 一个确认一个取消 我点击确认游戏扣费 然后道具购买成功

破解目的:
在不花费话费 或者金币的情况下 让道具购买成功
既然购买流程和我们的破解目的都清楚了 那么破解思路也就跟着来了:
(1)我点击取消让道具也能购买成功 是不是就把游戏给破解了
(2)在购买失败,扣费失败的情况下 让道具购买成功(这个也就是为什么我们要搜索"失败"的原因)

1.用AndroidKiller打开我们的原版apk 搜索字符"失败" 点搜索框下面的aA 文本转Unicode 选择搜索范围 点击搜索,找到购买失败 鼠标滑轮向上滑动 这里看到购买失败这四个字在payResultFalse方法里面





2.点击小咖啡图标将当前smali代码转换成java代码



3.这里就是支付失败所执行的方法了 可以看到这个方法下面是payResultSuccess()这个方法 这个是支付成功的方法 还有payResultCancel 支付取消的方法
非己非人写的那篇教程 是把支付失败方法里面的smali内容替换成支付成功方法里面的smali内容 来达到破解的目的
我们这里换一种破解思路,我去找哪里调用payResultFalse方法 然后我把这个方法名字改成支付成功方法的名字 是不是也可以达到游戏破解的目的?


4.搜索payResultFalse 找到如图位置 这里有两种破解方式 一种是把pswitch_1改成pswitch_0 另一种是把payResultFalse改成payResultSuccess 都可以达到游戏破解的目的
要求:理解switch语法 不懂的地方自己去百度 本节课的例子自己跟着去练习


5.总结
本节课通过实例带你用两种方式破解了第一个Android游戏 第一种是非己非人写的把购买成功里面的smali代码替换到购买失败函数中去 第二种是在购买失败函数调用处 改变switch语句达到破解的目的 你在练习完本节课例子的最后我给你留了一个任务:自己用第三种方式完成对此游戏的破解。
当然教程讲的并没有这么详细 破解过程中遇到不懂得自己去百度 再不懂的就来问我 学习逆向就是这样 学不会就会感觉迷茫 但是不用怕 记住多迷茫几次就都学会了每节课布置的课后作业一定要完成 课后作业都不做的话 那我的帖子你也不用继续跟了 学而不思则罔,思而不学则殆 ,不仅要完成还要能理解 本节课到此结束 下节课我将带着你去动态调试smali代码

6.课后作业:
前两个跟着教程并破解游戏 后两个自己尝试去破解   注:课后作业一定要做
1.https://www.52pojie.cn/thread-632178-1-2.html滚动的天空
2.https://www.52pojie.cn/thread-620244-1-1.html火柴者联盟


3.https://www.52pojie.cn/thread-656493-1-1.html城市飞车3D-模拟驾驶破解版(内购破解版)
4.https://www.52pojie.cn/thread-656462-1-1.html3D狂野飞车2极速前进(内购破解版)


下一篇 《教我兄弟学Android逆向04 动态调试smali代码》





Dragons·宇 发表于 2017-10-24 11:52

这些都太简单了,靠自己摸索出来也花不了太多时间。论坛上其他大神发的又太难,希望楼主能出一些so层相关的知识,能讲的易懂一点就更好了。

匿名者CP 发表于 2018-4-11 15:17

大佬,2种方法全失败是什么问题,本来之前看过其他教程想自己试试,自己修改的不成功,然后根据你的教程,按照你说的改法,也保存了,不管是修改paswitch还是payresultfalse全都失败了,从你链接下载的apk。

123-木头人 发表于 2017-11-8 17:40

退役单身 发表于 2017-11-8 15:37
ShakaApktool版本要更新了,我之前也遇到过

当前 Apktool 使用版本:apktool_2.3.0
正在编译 APK,请稍等...
>I: Using Apktool 2.3.0
>I: Smaling smali folder into classes.dex...
>I: Building resources...
>S: WARNING: Could not write to (C:\Users\i\AppData\Local\apktool\framework), using C:\Users\i\AppData\Local\Temp\ instead...
>S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable
>W: E:\AndroidKiller_v1.3.1\projects\idm下载\Project\res\values-v23\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/WindowTitle'.
>W:
>W: E:\AndroidKiller_v1.3.1\projects\idm下载\Project\res\values-v23\styles.xml:9: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/WindowTitleBackground'.
>W:
>W: E:\AndroidKiller_v1.3.1\projects\idm下载\Project\res\values-v24\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Animation.DropDownUp'.
>W:
>W: E:\AndroidKiller_v1.3.1\projects\idm下载\Project\res\values-v24\styles.xml:8: error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Animation.DropDownDown'.
>W:
>Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1):
>        at brut.androlib.Androlib.buildResourcesFull(Androlib.java:485)
>        at brut.androlib.Androlib.buildResources(Androlib.java:419)
>        at brut.androlib.Androlib.build(Androlib.java:318)
>        at brut.androlib.Androlib.build(Androlib.java:270)
>        at brut.apktool.Main.cmdBuild(Main.java:224)
>        at brut.apktool.Main.main(Main.java:75)
>Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1):
>        at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:454)
>        at brut.androlib.Androlib.buildResourcesFull(Androlib.java:471)
>        ... 5 more
>Caused by: brut.common.BrutException: could not exec (exit code = 1):
>        at brut.util.OS.exec(OS.java:95)
>        at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:448)
>        ... 6 more
APK 编译失败,无法继续下一步签名!




现在成这样了

d446184920 发表于 2018-8-3 17:15

新手学习,后两个游戏按教程更改后还是不能内购,希望能给个详细教程

as36601987 发表于 2017-10-23 18:01

全是java,这世界要疯

ll19921124 发表于 2017-10-23 20:22

不错,之前学过一点破解!但是没这么详细!加油,兄弟!

veily88 发表于 2017-10-23 17:39

辛苦楼主了,好贴   收藏了

wanmei195634 发表于 2017-10-23 17:41

很详细的,多谢楼主,已是你的观众

huangai93 发表于 2017-10-23 17:56

虽然不知道LZ在说什么但是感觉很厉害的样子~

sunnylds7 发表于 2017-10-23 17:58

棒棒哒的楼主

大笨 发表于 2017-10-23 18:07

额,可以可以

xu741852 发表于 2017-10-23 18:46

技术贴,太好了。牛

丿颠覆灬虎哥 发表于 2017-10-23 20:18

感谢楼主的分享
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 《教我兄弟学Android逆向03 破解第一个Android游戏 》