失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 安卓逆向009实战分析smali代码破解小游戏(贪吃蛇)

安卓逆向009实战分析smali代码破解小游戏(贪吃蛇)

时间:2021-01-28 05:30:04

相关推荐

安卓逆向009实战分析smali代码破解小游戏(贪吃蛇)

文章目录

一些小知识小游戏实践

一些小知识

反编译一个APK,找到他的源码所在地,即smali(原本是dex文件)温馨提示,一个dex就反编译一个smali文件,当dex内的方法超过65535个,就会出现2个dex文件夹,即反编译会出现2个smali文件夹这里一般“ com ”文件夹是作者自己写的代码,其他的是系统代码。

小游戏实践

随便打开一个smali文件,第一行是“包名”+“类名”其中的“Lcom”中的“L”是指“java”的意思。第十行的“<init>”是初始化,先不用管;第十行是开始方法,十六行结束方法,十五行这个方法返回一个“空”,之后就没了。总的从10~16行就是一个方法开始后,初始化之后返回空就结束了。

一般情况下,P0没有被定义为参数,默认就是this。往下看,第33行,意思是将P0的值传给V1,即把thisc传给了V1.

像44行的“:goto_1“与47行的“:cond_0”都是“半标签”,即不会自己运行,就能被别的地方调用,才会执行。第48行,定义一个类“V2”,是java类型的。内容(59行),如果V1不等于V2的话,就跳转到“ :cond_1 ”。

我们可以弹出图标,弹出java的源码对比一下。

我们来继续破解,之前研究过,直接在“工程搜索”处搜索“支付失败”,直接输入中文搜不到,就编码一下在搜索,看到第90行的代码,定义一个V2,对应的值为“支付失败”。

92行,初始化V1与V2(别的先不管),这里我们只看V2。94行,是调用拼接,96行,拼接后返回V1,98行,调用了一个“tostring”方法,将V1传进去,100行,将结果返回到V1,102行,将V2定义为0.0就是falsed的意思。104行,将V0,V1,V2全部传进makeText方法,106行,将结果返回到V0108行,将V0传入“show” 方法。 这里从字面意思也可以猜出,是将结果V0打印输出。

在之后也没有什么逻辑,在128行,直接调用“BuyFailed”方法。在114行,返回空。115行,整个逻辑结束。

上述整个过程转化为Java代码就是框内的这些,

其中,从Java的代码就可以很容易得知破解的逻辑,即无论支付成功与失败都调用“BuySccess”方法即可,

或者直接将支付成功的那两行代码直接覆盖上述失败的两处。复制“支付成功”的两行代码,将上述替换之后直接回编译这两种都可以。

在之后,安装回编译后的软件即可实现内购

如果觉得《安卓逆向009实战分析smali代码破解小游戏(贪吃蛇)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。