android游戏——魔塔内购破解版及分析
在taptap上无意之中的找到的游戏,不到1MB大小,玩了几分钟钟后发现游戏里面竟然有内购,而且还看到了支付宝,突然就想搞事情,反编译,搜索9000的十六进制,没有结果,购买失败的时候弹出了一个Toast,Toast里的字符串为支付失败,那就搜索支付失败的Unicode,于是就找到了关键的smail文件,简单的分析之后,发现了支付成功的Unicode也是在这个smail文件之中,那么修改就是简单的事情了.method public onResult(Ljava/lang/String;)V
.locals 4
.prologue
const/4 v3, 0x0
.line 83
new-instance v0, Lcom/itwander/plugin/PayResult;
invoke-direct {v0, p1}, Lcom/itwander/plugin/PayResult;-><init>(Ljava/lang/String;)V
.line 89
invoke-virtual {v0}, Lcom/itwander/plugin/PayResult;->getResult()Ljava/lang/String;
.line 91
iget-object v1, p0, Lcom/cyanflxy/game/ext/ExtActivity$1;->a:Lcom/cyanflxy/game/ext/ExtActivity;
.line 92
invoke-virtual {v0}, Lcom/itwander/plugin/PayResult;->getResultStatus()Ljava/lang/String;
move-result-object v0获得v0
.line 94
const-string v2, "9000"
invoke-static {v0, v2}, Landroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z判断v0是否与9000相等,9000是支付宝中成功的标识码,这里也就是判断是否支付成功
move-result v2
if-eqz v2, :cond_0 判断v2是否为0,为0就跳转到cond_0 ,不为0的话也就是支付成功了,我们只需要将这一行删除,就会弹出支付成功的Toast,弹出支付成功的Toast也就意味着我们破解成功了
.line 95
const/16 v0, 0x3e8
invoke-static {v0}, Lcom/cyanflxy/game/a/a;->d(I)V
.line 96
iget-object v0, p0, Lcom/cyanflxy/game/ext/ExtActivity$1;->a:Lcom/cyanflxy/game/ext/ExtActivity;
invoke-static {v0}, Lcom/cyanflxy/game/ext/ExtActivity;->a(Lcom/cyanflxy/game/ext/ExtActivity;)V
.line 97
const-string v0, "\u652f\u4ed8\u6210\u529f"支付成功
invoke-static {v1, v0, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast; 弹出Toast
move-result-object v0
invoke-virtual {v0}, Landroid/widget/Toast;->show()V
.line 107
:goto_0
return-void
.line 98
:cond_0
const-string v2, "8000"
invoke-static {v0, v2}, Landroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
move-result v0
if-eqz v0, :cond_1
.line 101
const-string v0, "\u652f\u4ed8\u7ed3\u679c\u786e\u8ba4\u4e2d"
invoke-static {v1, v0, v3}, 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
goto :goto_0
.line 104
:cond_1
const-string v0, "\u652f\u4ed8\u5931\u8d25"
invoke-static {v1, v0, v3}, 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
goto :goto_0
.end method
破解版 链接: https://pan.baidu.com/s/1m48Sm-HIa7UeV0varOKbxg 密码: 9vgr
原版 链接: https://pan.baidu.com/s/13VxaRcV-1HCsP5oQ8mLGTA 密码: u3vz
当前 Apktool 使用版本:Android Killer Default APKTOOL
正在反编译 APK,请稍等...
>I: 使用 ShakaApktool 2.0.0-20150914
>Exception in thread "main" b.a.D: b.d.f: java.util.zip.ZipException: zip END header not found
> at b.a.E.g(Unknown Source)
> at b.a.E.a(Unknown Source)
> at b.b.a.a(Unknown Source)
> at b.b.a.a(Unknown Source)
> at com.rover12421.shaka.cli.Main.main(Unknown Source)
>Caused by: b.d.f: java.util.zip.ZipException: zip END header not found
> at b.d.j.<init>(Unknown Source)
> at b.d.j.<init>(Unknown Source)
> at b.a.d.c.a.a(Unknown Source)
> ... 5 more
>Caused by: java.util.zip.ZipException: zip END header not found
> at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1252)
> at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1153)
> at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1160)
> at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:997)
> at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:960)
> at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:216)
> at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:148)
> at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:162)
> ... 8 more
APK 反编译失败,无法继续下一步源码反编译!
这个是什么问题 878510 发表于 2018-3-8 10:48
下了AndroidKiller看发觉不会用
还是谢谢楼主了
不懂使用Androidkiller可以看我的写的破解教程http://www.cnblogs.com/kexing/p/8001065.html 学习了 学习了 老哥厉害了,魔塔童年回忆啊{:1_899:} 大哥貌似链接已经被河蟹了 你下载的没加固? 魔塔50层,看楼主的塔主的 厉害了 正在看 连接挂了 {:301_998:}29层以后怎么过。。 逆天的楼主是我表哥