|
吾爱游客
发表于 2019-11-18 00:26
1.申请ID:hkccc
2.个人邮箱:hkccc123@sina.cn
3.原创技术文章:破解熊出没之熊大农场
首先我要说的是这篇文章技术含量其实不高,主要是想来寻求帮助的,管理如果忙的话就可以先放一放。
如题,本人是大三学生一枚,早在初中就了解到吾爱破解了,也算是神往已久了,虽然那个时候只是来找破解软件的哈哈哈。大学学的知识很杂,但都不深,碰碰撞撞,最终发现自己好像对安卓逆向有浓厚的兴趣,于是最近又逛起了吾爱论坛,学习逆向方面的技术。本想默默学习,奈何基础浅薄,在学习的时候碰到了点问题,试了一个星期还是没弄出来,于是想进论坛寻求帮助,遇到的问题也刚好跟这篇文章有关,下面进入正题。
该app是我找来练手的一个弱联网游戏,首先运行原APK进入游戏,完成新手教程后确定其充值方式为话费支付,且充值失败后有弹窗提示,这就很简单了。
卸载原版程序,’将安装包丢入AndroidKiller中进行反编译,直接打包运行,在不联网的情况下可以正常进游戏。接着搜索“支付失败”的Unicode码,发现结果并不多,且都在joym目录下,逐个查看。(程序的入口:com.joym.PaymentSdkV2.SplashActivity)
第一个是抛出支付失败异常,不管,继续往下看,来到下面一个搜索结果,发现在一个OnResult的函数中,查看其java代码如下。
为了让APK支付成功,找到支付成功对应的smali语句:
:pswitch_0
iget-object v0, p0, Lcom/joym/PaymentSdkV2/model/PlatformCM$6$1;->val$callback:Lcom/joym/PaymentSdkV2/Logic/PaymentCallback;
const/16 v1, 0x64
const-string v2, "\u652f\u4ed8\u6210\u529f"
invoke-virtual {v0, v1, v2, v4}, Lcom/joym/PaymentSdkV2/Logic/PaymentCallback;->onCallback(ILjava/lang/String;Ljava/lang/String;)V
goto :goto_0
然后找到switch(parmInt)对应的smali语句,在其之前插入goto语句,直接无条件跳转到执行充值成功的语句。
goto :pswitch_0
packed-switch p1, :pswitch_data_0
这里的更改就算成功了,为了一步到位,继续看其他地方,来到下面的代码,发现在一个payFailed函数里面,显然的支付失败,查看其java代码。这里为了省事,就不去查哪里调用他们了,直接把支付取消和支付失败函数里的内容都改为支付成功函数里面的语句。
修改完成,继续往下看,略过无关结果,来到一个类似的地方,同上, 代码替换掉。继续往下,来到一个payresult函数,支付成功语句代码
:pswitch_0
iget-object v1, p0, Lcom/joym/PaymentSdkV2/model/PlatformCU$10;->val$callback:Lcom/joym/PaymentSdkV2/Logic/PaymentCallback;
const/16 v2, 0x64
.line 457
const-string v3, "\u652f\u4ed8\u6210\u529f"
……
将下列的因此将紧跟在下面的跳转代码都改为支付成功的跳转pwitch_0
.packed-switch 0x1
:pswitch_0
:pswitch_1
:pswitch_2
继续往下碰到的代码都类似上面,也类似的改就行了。碰到一个判断跳转的地方:
if (((String)localObject1).equals("1"))
{
this.this$0.uploadcuinfo();
this.val$callback.onCallback(100, "支付成功", paramString);
this.this$0.setSharedPreferences("1", "支付成功");
}
意思是调用String的equal函数,与1比较,相等的话执行支付成功回调,这里在对应的smali语句中把判断注释掉,无条件执行支付成功代码就行了:
#if-eqz v3, :cond_0
下面碰到的其他判断跳转也类似的改,if语句中包含的是支付成功的代码就注释掉if语句,否则就将if语句改为goto语句无条件跳转到支付成功代码语句即可。
终于改完了,删除敏感的发短信权限,打包签名,安装到模拟器上运行,点击支付,发现支付成功。
,
然后问题来了,一联网就闪退,请问大佬这是网络签名验证吗,是的话不应该不联网能打开啊,不是的话为啥打开就闪退,该怎么解决啊,自己搞了一个星期,也分析了so层,尽力而为了还是没弄好。
注:才刚刚学,知识掌握不多,请大佬解答详细点,万分感谢!
最后,附上网盘地址 原版APK
链接: https://pan.baidu.com/s/1NdrEmD5R4nfuRPvUx5lnXQ 提取码: 33yv
破解不联网正常运行APK
链接: https://pan.baidu.com/s/1hlZBEnRszbu5h66wdr8xsw 提取码: z94b
最最后加一句验证问答 Hmily大大最帅 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|