非己非人 发表于 2017-9-7 22:57

《新人贴》初次尝试破解内购小游戏:切水果大作战

本帖最后由 非己非人 于 2017-9-7 23:05 编辑

新人第一次,感谢大神们提供的教程。
参考帖:破解参考:https://www.52pojie.cn/thread-632178-1-2.html ,去除可能会产生费用的危险权限: https://www.52pojie.cn/thread-620244-1-1.html
工具:Android Killer 、夜神模拟器
原版游戏下载地址:http://appstore.huawei.com/app/C10875454
破解后下载地址:https://pan.baidu.com/s/1gfCJoER 密码:egen         破解版本仅供学习,还请支持正版,谢谢。
1、首先还是先打开游戏,然后点击左上角的礼包,然后就出下面的这个东西,很明显,还是常用套路,搜索支付失败

2、使用Android Killer v1.3.1进行反编译,输入失败,然后在左下角的Aa选择文本转Unicode,发现MymmPay这个,感觉应该就是支付的那个文件了。

3、打开这个MymmPay.smali,使用Android Killer v1.3.1中的JAVA图标查看源码。可以找到下面这几个代码,说明我们找对了,确实是这个,那么接下来怎么修改呢?

4、修改取消购买和购买失败的代码,我们再回到Android Killer v1.3.1中,查看代码
.method public payResultCancel()V
    .locals 2

    .prologue
    .line 1407
    iget-object v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->psif:Lcom/mydefinemmpay/mypay/PaySuccessInterface;

    sget v1, Lcom/mydefinemmpay/tool/MymmPay;->payId:I

    invoke-interface {v0, v1}, Lcom/mydefinemmpay/mypay/PaySuccessInterface;->doPayCancel(I)V

    .line 1408
    const-string v0, "\u8d2d\u4e70\u53d6\u6d88"

    invoke-virtual {p0, v0}, Lcom/mydefinemmpay/tool/MymmPay;->showDebug(Ljava/lang/String;)V

    .line 1411
    return-void
.end method   ####上面为取消购买的代码内容

.method public payResultFalse()V
    .locals 3

    .prologue
    const/4 v2, 0x2

    .line 1378
    iget-object v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->psif:Lcom/mydefinemmpay/mypay/PaySuccessInterface;

    sget v1, Lcom/mydefinemmpay/tool/MymmPay;->payId:I

    invoke-interface {v0, v1}, Lcom/mydefinemmpay/mypay/PaySuccessInterface;->doPayFalse(I)V

    .line 1379
    const/4 v0, 0x0

    iput-boolean v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->paysuss:Z

    .line 1380
    const-string v0, "zhifu false"

    invoke-virtual {p0, v0}, Lcom/mydefinemmpay/tool/MymmPay;->Printlog(Ljava/lang/String;)V

    .line 1381
    iget v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->falseTime:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->falseTime:I

    .line 1384
    const-string v0, "\u8d2d\u4e70\u5931\u8d25"

    invoke-virtual {p0, v0}, Lcom/mydefinemmpay/tool/MymmPay;->showDebug(Ljava/lang/String;)V

    .line 1385
    iget v0, p0, Lcom/mydefinemmpay/tool/MymmPay;->falseTime:I

    if-ne v0, v2, :cond_0

    .line 1386
    invoke-static {}, Lcom/mydefinemmpay/tool/MessageUtil;->getInstance()Lcom/mydefinemmpay/tool/MessageUtil;

    move-result-object v0

    iget v0, v0, Lcom/mydefinemmpay/tool/MessageUtil;->ADOpen:I

    if-ne v0, v2, :cond_0

    .line 1387
    sget-object v0, Lcom/mydefinemmpay/tool/MymmPay;->adf:Lcom/mydefinemmpay/mypay/UUADSDKPayInterface;

    if-eqz v0, :cond_0

    .line 1388
    sget-object v0, Lcom/mydefinemmpay/tool/MymmPay;->adf:Lcom/mydefinemmpay/mypay/UUADSDKPayInterface;

    iget-object v1, p0, Lcom/mydefinemmpay/tool/MymmPay;->context:Landroid/content/Context;

    invoke-interface {v0, v1, p0}, Lcom/mydefinemmpay/mypay/UUADSDKPayInterface;->init(Landroid/content/Context;Lcom/mydefinemmpay/mypay/MymmPayInterFace;)V

    .line 1389
    const-string v0, "\u8d2d\u4e70\u5931\u8d25\u4e24\u6b21\u5f00\u542f\u5e7f\u544a"

    invoke-virtual {p0, v0}, Lcom/mydefinemmpay/tool/MymmPay;->showDebug(Ljava/lang/String;)V

    .line 1396
    :cond_0
    invoke-virtual {p0}, Lcom/mydefinemmpay/tool/MymmPay;->getLibKind()I

    move-result v0

    const/4 v1, 0x1

    if-ne v0, v1, :cond_1

    .line 1397
    invoke-static {}, Lcom/mydefinemmpay/tool/MessageUtil;->getInstance()Lcom/mydefinemmpay/tool/MessageUtil;

    move-result-object v0

    iget-object v0, v0, Lcom/mydefinemmpay/tool/MessageUtil;->sdkKind:Ljava/lang/String;

    const-string v1, "0"

    invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_1

    .line 1398
    invoke-virtual {p0}, Lcom/mydefinemmpay/tool/MymmPay;->getPayT()I

    move-result v0

    if-nez v0, :cond_1

    .line 1399
    sget-object v0, Lcom/mydefinemmpay/tool/MymmPay;->osif:Lcom/mydefinemmpay/mypay/OtherSDKPayInterface;

    invoke-interface {v0}, Lcom/mydefinemmpay/mypay/OtherSDKPayInterface;->pay()V

    .line 1404
    :cond_1
    return-void
.end method      ####一直到这,都是购买失败的代码


下面的是购买成功的代码:


.method public payResultSuccess()V
    .locals 8

    .prologue
    const/4 v7, 0x1

    const/4 v6, 0x0

    .line 1344
    invoke-static {}, Lcom/mydefinemmpay/tool/RecordOpreate;->getInstance()Lcom/mydefinemmpay/tool/RecordOpreate;

    move-result-object v3

    .line 1345
    sget-object v4, Lcom/mydefinemmpay/tool/RecordOpreate;->totalMoey:Ljava/lang/String;
中间太多了我就删了点。。。
    .line 1360
    iget-object v3, p0, Lcom/mydefinemmpay/tool/MymmPay;->dpv:Ljava/util/Vector;

    invoke-virtual {v3, v0}, Ljava/util/Vector;->remove(Ljava/lang/Object;)Z

    .line 1357
    add-int/lit8 v1, v1, 0x1

    goto :goto_0
.end method
由于我是新手,跳转什么有点搞不太懂,我就直接把购买成功的代码复制替换掉失败的代码。就是将.method public payResultSuccess()V后面一直到.end method的所有代码复制替换掉.method public payResultFalse()V、.method public payResultCancel()V后面的代码。注:基本上和我上面说的参考贴是一样的做法,乱的话,可以直接看上面的参考贴。
5、最后删除可能会产生费用的危险权限:
在AndroidManifest.xml里搜索(或者可以直接搜索下面的这个)
android.permission.SEND_SMS
删掉
<uses-permission android:name="android.permission.SEND_SMS"/>
其实上面的参考贴里有两个,但是我只搜索到一个,所以我就删了一个,另外一个是什么表示完全不知道
6、最后打包编译,就可以快乐的玩耍了。支付的窗口如何跳过我还不知道,求大神讲解。最后取消购买,会显示支付失败,窗口关闭后会显示成功。强烈建议在飞行模式下打开,因为新手,不确定是否存在扣费的。


好了,第一次尝试破解游戏就这个样子了,破解没花多长时间,写个帖子,还真累。。。。

狂侠先森 发表于 2018-3-15 06:48

同样的操作安卓模拟器无法打开。。。。。。

非己非人 发表于 2017-9-7 23:08

liunian4119 发表于 2017-9-7 23:07
网页的有没有什么思路?大神

别闹了,我这是新人贴,你要去找其他的大神了,毕竟我也是个新手。。。。。

164738777 发表于 2017-11-2 17:26

Lang图腾 发表于 2017-10-27 21:46
老哥,非常感谢 ,通过百度,终于解决了刚才的问题,刚才忘了保存尴尬,希望和我一起在学的小伙伴们一定要 ...

老哥, 那签名怎么办? 不签名的话手机不能安装吧?

klwhamwu 发表于 2017-9-8 10:10

aaaaaaaaaaaaaaaaaaaa

liunian4119 发表于 2017-9-7 23:07

网页的有没有什么思路?大神

梦辰 发表于 2017-9-7 23:58

非己非人 发表于 2017-9-7 23:08
别闹了,我这是新人贴,你要去找其他的大神了,毕竟我也是个新手。。。。。
大佬 问问你啊 假如一个软件 是用激活码激活的安卓软件 该怎么破啊 a.a教教我可以不 A.A

冥界3大法王 发表于 2017-9-8 07:31

能说个所以然来就不能算是菜瓜!

呆萌小吃货 发表于 2017-9-8 08:58

支持新人

roturier 发表于 2017-9-8 09:46

让人怀念的小游戏。。。

pholy 发表于 2017-9-8 09:56

新人支持一个!~

alienhh 发表于 2017-9-8 10:25


感谢楼主分享
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 《新人贴》初次尝试破解内购小游戏:切水果大作战