发新帖

Android逆向工程——程序修改

  [复制链接]
5701 51
本帖最后由 Mitjavaz 于 2015-8-9 18:19 编辑

       平时,我们玩游戏,都会遇到这样的情况,爆破了收费,但是只是将游戏买断了罢了,而游戏没有其他增值,以至于很多时候,我们玩游戏还是觉得不那么简单,反而很困难。从而,又出现了爆破加修改版这样形式的游戏出现。

       不过对于玩家的需求,市场上普遍的金钱修改,已经无法满足,甚至于将游戏的可玩性大大降低,甚至于令游戏直接无挑战性,也就失去了娱乐意义。

举例:
游戏类型:模拟经营类
游戏名称:开罗百货商店开店日记
       像这款游戏,游戏经营只是一种模式,而更多的是挑战游戏的经营极限,挑战最终的那个排行榜。而在市场上能找到的,则是存档式的修改,而这样就会严重导致最终排行榜的成绩失去了最终的挑战意义。
       下面,我就以这款游戏,做一个此方面的小修改。
       目的:
1、让游戏的上手难度降低的同时,又不失去过多的游戏趣味。
2、让新手知道数据类型的取值范围。
       下面,开始进入我们的主题。


       首先,进入游戏得到一些关键词,我这里找到的是“狂热期结束”这个关键词。
       这款游戏,当人气累加到100的时候,游戏内的客户就会进入狂热期,从而进行大肆购买的状态。
       然后,我们用Android Killer将游戏反编译打开,通过字符串搜索,找到关键词所在的类。

       进入到所在的类,并且通过软件提供的JAVA源码查看工具查看源码。


       此时我们进行源码分析:
       首先,我们先把关键词所在的条件语句圈画出来,然后才进一步去分析整个程序是如何执行运作下去的。

    if (A == 1)       //第一句IF条件语句
    {
      int i2 = 1 + B;
      B = i2;
      if (i2 >= 1200) //第二句IF条件语句
      {
        A = 0;
        B = 0;
        b.f.a();
        int i3 = b.f.h();
        if (i3 == 0) {
          i3 = 1;
        }
        x = 100 * (b.n.a(100 * this.n / i3, 0, 2000, 0, 35, true) + b.n.a(0, 0, 5, 0, 15, true));
        this.au.d.a("狂热期结束。", 15);
        this.au.d(3);
      }
    }

       我们第一眼望过去,就是离狂热期结束最近的这个IF语句,即:第二句IF条件语句,意思非常明确,就是条件满足,狂热期就结束。
       那么第一句IF条件语句,我们第一眼看不出来,但是分析一下,还是能猜得出,这是一个判断状态的条件,若条件满足,则代表进入了狂热期这个状态,紧接着就是到第二条IF语句,去判断狂热期是否到了结束的时候。
       归纳一下程序大致流程:
1、通过第一条IF语句去判断购物状态是否为狂热期购物状态。
2、通过第二条IF语句去判断狂热状态的时间是否为结束狂热期购物状态。
       既然第二条是判断后执行结束狂热期状态的语句,那么我们看一下这第二条IF条件语句是怎么写判断条件的。
       if (i2 >= 1200)
       原来条件是判断一个变量名为i2的变量是否大于等于(>=)常量1200。
       那么,思路就出来了,既然是1200,既然是一个常量,那么我扩大这个常量的数值,是否就意味着延长了狂热期,让将执行“狂热期结束”这个操作就往后推延了。
       得到思路,那么就进入Android Killer,往里面找到1200这个数值,因为在android这个反编译的字节码里面,1200是以16进制显示,而1200是十进制的方式,十进制转十六进制后,1200就变为:0x4b0。

       将这个数值扩大即可,然后保存编译。
       最终测试情况就是这样:

      
       下面,留一个近似于作业的话吧,就是说,除了这种方式,还有没有其他方式去实现延长甚至永久保留此种状态的操作。
      
       另外,还有一点,就是在本文之中,各位有没有去注意在最后修改数值的一点细节问题。
      
        这个细节,有兴趣或者是发现了又或者是其他情况,想知道的,麻烦回复一下吧,谢谢各位支持了。
游客,如果您要查看本帖隐藏内容请回复



       好了,本文就到此结束了。
       希望各位爱好修改的朋友们,能在修改的同时,尽量别影响了游戏的娱乐性和趣味性,不然游戏会失去了游戏必有的存在价值和意义了。


致谢:逆向未来技术社区



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
已有3人评分 NB 荣获致谢 理由
Toxic + 1 + 1 很给力!
peterdocter + 2 赞一个!
越狱 + 2 + 1 很给力!

查看全部评分 总评分: NB +5  荣获致谢 +2 

举报 使用道具

回复

精彩评论51

xin    发表于 2015-8-9 21:10:05 来自手机  | 显示全部楼层
有没有在手机端修改的

举报 使用道具

回复 支持 反对
yyj85391    发表于 2015-8-10 06:54:39 来自手机  | 显示全部楼层
我去试试!!!

举报 使用道具

回复
听鬼哥说故事    发表于 2015-8-10 09:56:58 | 显示全部楼层
已置顶,欢迎楼主的文章,期待新作~~~~~~~~

举报 使用道具

回复 支持 反对
水波摇曳    发表于 2015-8-10 09:59:32 | 显示全部楼层
本帖最后由 水波摇曳 于 2015-8-10 14:08 编辑

回头细看..看能不能发现新知识
楼主大赞



---------
其实在赋值的时候  可能会遇到范围的问题,
这时候 只需要直接使用const 不用限定符就可以了;
比如你要辅助999
只需要下面写:
const v0, 0x3e7

举报 使用道具

回复 支持 反对
A00    发表于 2015-8-10 10:00:08 | 显示全部楼层
支持原创作品,感谢lz的修改教程

举报 使用道具

回复 支持 反对
越狱    发表于 2015-8-10 10:01:04 | 显示全部楼层
收藏备用

举报 使用道具

回复
peterdocter    发表于 2015-8-10 10:02:18 | 显示全部楼层
不久又一个大牛将要诞生

举报 使用道具

回复 支持 反对
sndncel    发表于 2015-8-10 19:48:12 | 显示全部楼层
呵呵。。。。。。。支持一下呀。

举报 使用道具

回复 支持 反对
ccxsaber    发表于 2015-8-11 16:42:52 | 显示全部楼层
嗯,谢谢分享,学习一下

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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