吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5878|回复: 25
收起左侧

[Android 原创] 逆向学习记录一:破解熊大农场

[复制链接]
hkccc 发表于 2019-11-20 08:27
    本人小白,最近才开始学逆向,记录下自己的学习记录,过程比较简单,具体破解步骤如下
    该app是我找来练手的一个弱联网游戏,首先运行原APK进入游戏,完成新手教程后确定其充值方式为话费支付,且充值失败后有弹窗提示,这就很简单了。
       截图1.jpg
    卸载原版程序,’将安装包丢入Androidkiller中进行反编译,直接打包运行,在不联网的情况下可以正常进游戏。接着搜索“支付失败”的Unicode码,发现结果并不多,且都在joym目录下,逐个查看。(程序的入口:com.joym.PaymentSdkV2.SplashActivity)
      截图2.jpg
    第一个是抛出支付失败异常,不管,继续往下看,来到下面一个搜索结果,发现在一个OnResult的函数中,查看其java代码如下。
      截图4.jpg 截图3.jpg
为了让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代码。这里为了省事,就不去查哪里调用他们了,直接把支付取消和支付失败函数里的内容都改为支付成功函数里面的语句。
    截图5.jpg 截图6.jpg
修改完成,继续往下看,略过无关结果,来到一个类似的地方,同上, 代码替换掉。继续往下,来到一个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语句无条件跳转到支付成功代码语句即可。
    终于改完了,删除敏感的发短信权限,打包签名,安装到模拟器上运行,点击支付,发现支付成功。
    充值前.jpg 充值后.jpg
   然后问题来了,一联网就闪退,请问大佬这是网络签名验证吗,是的话不应该不联网能打开啊,不是的话为啥打开就闪退,该怎么解决啊,自己搞了一个星期,也分析了so层,尽力而为了还是没弄好,求大佬顺便解惑。
    注:才刚刚学,知识掌握不多,请大佬解答详细点,万分感谢!
  最后,附上网盘地址  原版APK
  链接: https://pan.baidu.com/s/1NdrEmD5R4nfuRPvUx5lnXQ 提取码: 33yv
破解不联网正常运行APK
链接: https://pan.baidu.com/s/1hlZBEnRszbu5h66wdr8xsw 提取码: z94b

免费评分

参与人数 6吾爱币 +13 热心值 +5 收起 理由
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
cewolf + 1 按以上方法好像不行,下载破解版本也不行,不知道是什么原因
seadragon05 + 1 + 1 谢谢@Thanks!
monsterbaby521 + 1 + 1 我很赞同!
温馨提示 + 1 + 1 热心回复!
a58224 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

df4528 发表于 2019-12-8 14:02
这个游戏去年3月份我破解过,当时在手机和模拟器上均能正常使用,可能当时的版本没有第三方签名验证吧。可以比较下META-INF文件夹的内容。
附破解版本
链接:https://pan.baidu.com/s/1CSACpECfe1PiJon-hRyRQg
提取码:qza8
zyj402593623 发表于 2019-12-8 09:00
肯定服务器上面有你的金币之类的信息,一联网就发送封包验证,返回数据对比不对就退出,封包拦截看看。封包肯定也是加密的,看看有没有退出的函数直接干掉
dongmie 发表于 2019-11-20 12:09
raykeyor 发表于 2019-11-20 12:14
把步骤很详细,可以参考试试
gtp_ 发表于 2019-11-20 12:33
一同学习。。
勇敢南山 发表于 2019-11-20 12:38
大佬牛逼
whofly 发表于 2019-11-20 13:56
看来有安全加密啊
gblw 发表于 2019-11-20 14:46
顶顶更健康
scrapy 发表于 2019-11-20 15:26
支持继续创作
2Burhero 发表于 2019-11-20 15:38
看你是11月19注册的,怎么注册的,不是不开放注册吗
 楼主| hkccc 发表于 2019-11-20 15:43
2Burhero 发表于 2019-11-20 15:38
看你是11月19注册的,怎么注册的,不是不开放注册吗

申请专区可以发帖申请的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表