【新手】元气骑士尝试破解内购版教程
昨天在开始看安卓逆向的教程,觉得非常有趣,浏览过几个帖子后,决定自己动手破解一个手机游戏。自己动手丰衣足食嘛!!!
【游戏】元气骑士(现在taptap下不了了,大家想玩的去官网下载吧http://www.chillyroom.com/)
【环境】PC
【工具】Android Killer V1.3.1[ https://www.52pojie.cn/thread-319641-1-1.html]
接下来我们开始破解过程
第一步:
安装游戏到手机或者模拟器上,在经过新手教程后会选英雄时就可以购买,跳转到购买界面后取消购买,后会弹出购买失败
第二步:
在工具上全局搜索“失败”转Unicode的码;
打开着文件,双击下方的代码
在这我们可以看见onPaySuccess
.line 100
:pswitch_1
invoke-static {}, Lcom/chillyroomsdk/sdkbridge/config/SdkConfig;->getInstance()Lcom/chillyroomsdk/sdkbridge/config/SdkConfig;
move-result-object v1
const-string v2, "publicKey"
invoke-virtual {v1, v2}, Lcom/chillyroomsdk/sdkbridge/config/SdkConfig;->getAppParam(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {p2, v1}, Lcom/iapppay/sdk/main/IAppPayOrderUtils;->checkPayResult(Ljava/lang/String;Ljava/lang/String;)Z
move-result v0
.line 101
.local v0, "payState":Z
if-eqz v0, :cond_0
.line 102
iget-object v1, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->this$1:Lcom/chillyroomsdk/iapppay/MainActivity$3;
iget-object v1, v1, Lcom/chillyroomsdk/iapppay/MainActivity$3;->this$0:Lcom/chillyroomsdk/iapppay/MainActivity;
const-string v2, "\u652f\u4ed8\u6210\u529f"
invoke-static {v1, v2, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object v1
invoke-virtual {v1}, Landroid/widget/Toast;->show()V
.line 103
iget-object v1, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->this$1:Lcom/chillyroomsdk/iapppay/MainActivity$3;
iget-object v2, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$orderId:Ljava/lang/String;
iget-object v3, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$productId:Ljava/lang/String;
iget-object v4, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->val$extra:Ljava/lang/String;
invoke-virtual {v1, v2, v3, v4}, Lcom/chillyroomsdk/iapppay/MainActivity$3;->onPaySuccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
goto :goto_0
.line 105
:cond_0
iget-object v1, p0, Lcom/chillyroomsdk/iapppay/MainActivity$3$1;->this$1:Lcom/chillyroomsdk/iapppay/MainActivity$3;
iget-object v1, v1, Lcom/chillyroomsdk/iapppay/MainActivity$3;->this$0:Lcom/chillyroomsdk/iapppay/MainActivity;
const-string v2, "\u652f\u4ed8\u6210\u529f\u4f46\u9a8c\u7b7e\u5931\u8d25"
invoke-static {v1, v2, v3}, Landroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
move-result-object v1
invoke-virtual {v1}, Landroid/widget/Toast;->show()V
goto :goto_0
在这段代码的顶部我们可以看见pswitch_1,我们继续往下翻可以看见
在语句结束的时候,有三段pswitch_,我们知道pswitch_1是支付成功后,把他们全改成pswitch_1;我们打包安装后,会是“支付成功但验签失败”
我们继续向上找,我们会看见我们一开始找到的代码,那是在购买成功后,还会返回验证,寻找返回值,我们搜索cond_0,能看见
双击这两个,寻找他们的位置,把他们注释掉;我们继续打包安装,在购买取消后,支付还是不成功,会弹出“此订单没有进行支付,如有疑问请咨询客服”,那我们直接全局搜索“此订单”,我么会看见“此订单没有进行支付,如有疑问请咨询客服”转成的Unicode码,双击进去。会有很多代码,看的我贼痛苦,不想翻了,就直接搜索cond后,我们点击每个cond,查看他们自己所带的含义。cond_3后有"transdata"看名字就知道是返回值,先放下;cond_5后就是我们要找的“此订单没有进行支付,如有疑问请咨询客服”;cond_a“验证签名失败”;cond_b"verify fail"验证失败,cond_1的后面有一句代码是return-void返回空值,代表着购买失败;我么先找cond_1,发现有两if指向cond_1,和指向我在上方所写的cond,我们把它注释掉。
第三步:解除签名
这游戏是有签名验证的,需要改掉签名验证(关闭网络进游戏会闪退,判断是本地签名验证),全局搜索signatures,可以找到到UnityExtendActivity再去搜索getkeyhash在prologue后回车输入return-void,之前说了这个是返回空值。之后打包安装。
这是我自己的破解之旅,第一次破解,希望大佬轻喷,新手互相学习。。。。。希望能帮助到大家!!!!
谢谢浏览
最后附上破解完成的软件,只做交流使用
链接:https://pan.baidu.com/s/1rjemsuE-e-91NuqDYR-IEQ 密码:4cpi 当前 Apktool 使用版本:Android Killer Default APKTOOL
正在编译 APK,请稍等...
>I: 使用 ShakaApktool 2.0.0-20150914
>I: 编译 smali 到 classes.dex...
>I: 正在编译资源...
>I: Can't set aapt binary as executable
>Exception in thread "main" com.rover12421.shaka.b.l:
> at com.rover12421.shaka.a.b.g.a(Unknown Source)
> at b.a.d.a.a(Unknown Source)
> at b.a.a.b(Unknown Source)
> at b.a.a.a(Unknown Source)
> at b.a.a.e(Unknown Source)
> at b.a.a.a(Unknown Source)
> at b.b.a.b(Unknown Source)
> at b.b.a.a(Unknown Source)
> at com.rover12421.shaka.cli.Main.main(Unknown Source)
>Caused by: com.rover12421.shaka.b.l: Can't set aapt binary as executable
> at b.a.d.a.a(Unknown Source)
> at b.a.d.a.d(Unknown Source)
> at b.a.d.a.a(Unknown Source)
> at b.a.d.l.a(Unknown Source)
> at org.c.b.b.c.a(Unknown Source)
> ... 9 more
>Caused by: java.lang.NullPointerException
> at org.b.a.b.b.a(Unknown Source)
> at org.b.a.b.b.b(Unknown Source)
> at org.b.a.b.b.a(Unknown Source)
> at com.rover12421.shaka.b.f.a(Unknown Source)
> at com.rover12421.shaka.b.j.a(Unknown Source)
> at com.rover12421.shaka.b.j.c(Unknown Source)
> at com.rover12421.shaka.b.j.a(Unknown Source)
> ... 14 more
APK 编译失败,无法继续下一步签名!
求助 楼主厉害了,问个问题啊,如何定位那个签名验证是在UnityExtendActivity那个smali里面啊 问一下楼主 这个破解版是什么版本{:1_904:} 膜拜大神同时求帮忙 厉害了楼主,加油! 学习了楼主的思路 厉害了lz,加油! 厉害了lz,加油 q24655 发表于 2018-5-5 13:13
问一下楼主 这个破解版是什么版本
应该是1.6吧 taptap一直没有更新,我手机上就是这个版本 牛逼楼主,加油