吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 35366|回复: 79
收起左侧

[Android 原创] 拳皇97 for Android 破解分析

  [复制链接]
小试锋芒 发表于 2013-8-19 10:40
本帖最后由 小试锋芒 于 2013-8-19 10:42 编辑

声明:本文章仅做技术研究,请勿用于非法用途。

这个游戏在Android上闲着无聊的时候玩玩还是不错的,只是有很多限制,都是需要购买游戏币才能玩。所以接下来就来破解之。
用到的工具:APKTOOL、Notepad++、JD-GUI。

程序首次登陆时会赠送2枚游戏币,完了就得买游戏币才能玩,另外开启各种模式的时候也需要大量的游戏币,因此破解的关键是破解程序的游戏币值。
图一.png

图二.png

1、用APKTOOL反编译apk。

2、注意到程序画面的右上角,会显示:“游戏币:2”,按图索骥,搜索关键字”游戏币:“,在strings.xml中:
图三.jpg

3、再次搜索对应的字符串"coin_num",在public.xml中:
图四.jpg

4、下面查找在smali文件中哪里调用了字符串”游戏币:”,搜索0x7f080008,在如下地方找到:
图五.jpg

5、在smali\com\iava\game\menu\CoinActivity.smali中:

[Java] 纯文本查看 复制代码
.method private a()V
    .locals 4

    const v0, 0x7f06001b

    invoke-virtual {p0, v0}, Lcom/iava/game/menu/CoinActivity;->findViewById(I)Landroid/view/View;

    move-result-object v0

    check-cast v0, Landroid/widget/TextView;

    iput-object v0, p0, Lcom/iava/game/menu/CoinActivity;->a:Landroid/widget/TextView;

    iget-object v0, p0, Lcom/iava/game/menu/CoinActivity;->a:Landroid/widget/TextView;

    if-eqz v0, :cond_0

    sget-object v0, Lcom/iava/game/a;->y:Lcom/iava/game/data/CoinManage;

    invoke-virtual {v0}, Lcom/iava/game/data/CoinManage;->f()I

    move-result v0

    if-gtz v0, :cond_1

    iget-object v0, p0, Lcom/iava/game/menu/CoinActivity;->a:Landroid/widget/TextView;

    const/4 v1, 0x4

    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setVisibility(I)V

    :cond_0
    :goto_0
    return-void

    :cond_1
    iget-object v0, p0, Lcom/iava/game/menu/CoinActivity;->a:Landroid/widget/TextView;

    const/4 v1, 0x0

    invoke-virtual {v0, v1}, Landroid/widget/TextView;->setVisibility(I)V

    iget-object v1, p0, Lcom/iava/game/menu/CoinActivity;->a:Landroid/widget/TextView;

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-virtual {p0}, Lcom/iava/game/menu/CoinActivity;->getResources()Landroid/content/res/Resources;

    move-result-object v0

    const v3, 0x7f080008

        //“游戏币:”
    invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    invoke-static {v0}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    invoke-direct {v2, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    sget-object v0, Lcom/iava/game/a;->y:Lcom/iava/game/data/CoinManage;

        //获取游戏币的值
    invoke-virtual {v0}, Lcom/iava/game/data/CoinManage;->f()I

    move-result v0

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V

    goto :goto_0
.end method


6、smali文件不适合阅读,用jd-GUI来读取相关代码:
图六.jpg

7、显而易见,com.iava.game.a.y.f()是获取游戏币值的方法,来到com.iava.game.a类,也即com.iava.game.data.CoinManage类
图七.jpg

8、查看f()方法的具体实现:
图八.jpg

9、可见,f()的返回值由h()来决定,再看h()方法的具体实现:
图九.jpg

10、返回值就是游戏币的值,那么只要我们强制让这个返回值为一个固定的大的值比方8888,那么游戏币就永远都是8888,也就达到了破解的目的了。

11、下面对应到相应的smali文件中修改,在\smali\com\iava\game\data\CoinManage.smali文件中:

[Java] 纯文本查看 复制代码
.method private h()I
    .locals 2

    sget-object v0, Lcom/iava/game/a;->x:Lcom/iava/game/data/a;

    invoke-virtual {v0}, Lcom/iava/game/data/a;->al()V

    invoke-virtual {p0}, Lcom/iava/game/data/CoinManage;->a()I

    move-result v0

    const v1, -0x55555556

    xor-int/2addr v0, v1

        //强制返回8888(0x22B8)
        const v0,0x22B8
    return v0
.end method

12、保存修改,重建APK,签名,测试之,破解完成。
图十.png

图十一.png

附破解后的APK:
http://pan.baidu.com/share/link?shareid=4202997888&uk=604460222


免费评分

参与人数 13吾爱币 +1 热心值 +13 收起 理由
冥界3大法王 + 1 破解后的文件存于pan.baidu.com/s/1slVo73R 密码: uk5z
huo221400 + 1 + 1 谢谢@Thanks!
xuan3315 + 1 我很赞同!
寂静丶小冰 + 1 谢谢@Thanks!
暮雨深秋 + 1 用360手机助手安装会报毒
死神眯路 + 1 楼主有没有破解前的,发下谢谢
wzdbsss + 1 谢谢@Thanks!
wuwenhao1991 + 1 谢谢@Thanks!
BattleCall + 1 热心回复!
yqj2006 + 1 我很赞同!
sndncel + 1 谢谢@Thanks!谢谢分享。教程简单易懂呀。.
Bds1r + 1 非常好!希望还能再详细一点说明!
Smallhorse + 1 说说那些为什么要找那个就更屌爆了

查看全部评分

本帖被以下淘专辑推荐:

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

马斯维尔 发表于 2013-8-19 11:16
很厉害 。转战APK了啊。
以指代步 发表于 2013-8-19 10:46
1354669803 发表于 2013-8-19 11:55
GGLHY 发表于 2013-8-19 12:21
膜拜算法男!
絕戀de煩神 发表于 2013-8-19 12:28
膜拜鋒芒大神!
霸气嘿咻 发表于 2013-8-19 12:38
用手机玩不好玩


243201119 发表于 2013-8-19 12:44
膜拜大神。以后可能有用先收藏了
montana 发表于 2013-8-19 12:50
膜拜算法男!
TheEnd 发表于 2013-8-19 13:30
嘿嘿,锋芒大侠的作品必须支持,辛苦了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-22 06:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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