安卓从开发到逆向(二)逆向分析简单安卓手游

在上一篇文章,我们学习了
安卓从开发到逆向(一)java转换为smali对比分析
简单的认识了java代码和smali代码之间的对应关系,本文我们结合相关知识点,进行一次实战,逆向破解简单安卓手游,让无限生命称为可能。
安卓手游apk及逆向破解工具下载地址:

链接:https://pan.baidu.com/s/1mHOl9y-LXnETUg3oDAKNvA
提取码:3ygd

准备工具:

android killer,安卓手游1,夜神模拟器

我们先将安卓手游安装到夜神模拟器中,运行一下,看一下游戏初始给我们多少生命值。打开游戏后,点击商店,我们可以看到,游戏初始给我们提供了15个小球,3个护盾,0个通关钥匙,以及两次复活爱心。
安卓从开发到逆向(二)逆向分析简单安卓手游_第1张图片
接下来,我们点击无限量的球,购买道具,选择其他支付。
安卓从开发到逆向(二)逆向分析简单安卓手游_第2张图片
模拟器要求安装插件,点击取消,不安装。
安卓从开发到逆向(二)逆向分析简单安卓手游_第3张图片
此时无法购买即支付失败。使用androidkiller,对这款手游进行逆向破解。此时可以卸载在夜神模拟器中原始,也就是未破解前的手游app了。
打开androidkiller,将apk拖入软件,进行逆向破解。
安卓从开发到逆向(二)逆向分析简单安卓手游_第4张图片
如果androidkiller卡在正在反编译 APK 源码,请稍等…,则需要关闭androidkiller,重新打开。
切换到工程搜索,在搜索框中输入 支付失败 ,点击左下角的Aa,将文本转换为unicode,并点击搜索。
安卓从开发到逆向(二)逆向分析简单安卓手游_第5张图片
根据关键字特征,我们找到了支付失败文本所在的代码段
安卓从开发到逆向(二)逆向分析简单安卓手游_第6张图片
接下来,我们可以点击菜单栏的java图表,进行java和smali代码的对比分析。
在这里插入图片描述
在java代码中,我们可以看到,当前类OppPay$2$1中包含两个方法,分别为onFailure和onSuccess,同样的,在smali代码中,也存在着onFailure和onSuccess两个方法。通过阅读java代码,大致了解其支付逻辑。我们就可以着手于修改smali代码了。
我们的修改方法有两个,分别为:

1、将onFailure中的代码替换为onSuccess中的代码
2、找到onFailure方法的调用处,将其替换为onSuccess方法

经过对比分析,第一种方法更为简单。
我们复制smali中onSuccess的代码,替换onFailure代码。
安卓从开发到逆向(二)逆向分析简单安卓手游_第7张图片
修改后,切记,一定要保存。
接下来,我们点击androidkiller中的android标签,点击编译,重新将smali代码编译成apk包。
安卓从开发到逆向(二)逆向分析简单安卓手游_第8张图片
重新编译的apk包保存在当前项目目录下。
安卓从开发到逆向(二)逆向分析简单安卓手游_第9张图片
接下来就是见证奇迹的时刻了,我们将破解后的apk安装到夜神模拟器当中,运行,点击商店,购买无限量的球。
安卓从开发到逆向(二)逆向分析简单安卓手游_第10张图片
接下来,点击 其他支付。
安卓从开发到逆向(二)逆向分析简单安卓手游_第11张图片
app提示安装插件,我们选择取消安装。
安卓从开发到逆向(二)逆向分析简单安卓手游_第12张图片
这时,我们就可以看到,原来的15个小球,现在变成无限量的小球了。
安卓从开发到逆向(二)逆向分析简单安卓手游_第13张图片
动手尝试一下吧。

代码参考
欢迎交流,一起学习,一起进步。


安卓逆向视频教程:
微信关注公众号:dazhuang_spider,回复android逆向教程获取
安卓从开发到逆向(二)逆向分析简单安卓手游_第14张图片

你可能感兴趣的:(安卓从开发到逆向)