playjava吧 关注:345贴子:999
  • 16回复贴,共1

破解Java游戏教程

只看楼主收藏回复

转载


IP属地:江西来自Android客户端1楼2018-02-20 10:55回复
    用手机破解《梦幻夜网吧》---到大部分游戏:
    首先,我们在“易查”里下载个《梦幻夜网吧》的游戏。(用uc下载,别安装,保存在手机上)
    然后,我们用“minicommander”修改名称(假设改为sys.zip)。
    接着,我们退出“minicommander”,用软件“classtranslate修正版”将“sys.zip”打开(在这里我要说明一下"classtranslate"这个软件,这是一个用来汉化的软件,只能打开.jar格式,但由于nokia手机对.jar应用软件做了保护无法打开,所以我们要对“classtranslate”修改。具体的修改方法如下<你也可以直接下载修改版的>:用uc去易查上搜索“classtranslate”并保存到手机上,再用"minicommander"将后缀改成.zip,把所有的.class文件都解压到一个文件夹里来;退出“minicommander”后再用“classeditor”在每个.class文件里搜索“jar/Jar/JAR”搜索到了将jar改成zip保存退出;最后用“minicommander”把修改后的.class压缩回去,并把classtranslate.zip改成classtranslate也就是把后缀去掉;退出,来到手机文件界面,将classtranslate改成classtranslate.jar自动安装了,这样classtranslate就修改完成了) 打开“sys.zip”后我们在“classtranslate”的文本里寻找并找到“sms://”这样就可以确定游戏里短信收费在哪个.class文件里面(这里也可以用classeditor进行搜索,本人比较喜欢用classtranslate)游戏《梦幻夜网吧》的收费代码在类c.class里。
    再接着,确定好收费的.class后,用“minicommander”把“sys.zip”打开,并把c.class解压出来,退出。用“disassembler2jasmin”将c.class脱壳成c.j,再用jclazzme将c.class反编成c.java。


    IP属地:江西来自Android客户端2楼2018-02-20 10:56
    回复
      广告
      立即查看
      到了这一步,我们终于要切入正题了,就是对c.j进行修改,修改方法如下:用“MobyExplorer”打开c.java(其它能编辑文本的也行)
      c.java如下:


      IP属地:江西来自Android客户端4楼2018-02-20 10:57
      回复
        在这个收费的方法在“public final boolean b()”里,具体如下:
        public final boolean b()
        {
        MessageConnection messageconnection_1 = null;
        messageconnection_1 = ((MessageConnection) Connector.open(c));
        TextMessage textmessage_1 = ((TextMessage) ((MessageConnection) Connector.open(c)).newMessage("text"));
        ((TextMessage) ((MessageConnection) Connector.open(c)).newMessage("text")).setAddress(c);
        textmessage_1.setPayloadText(a);
        messageconnection_1.send(textmessage_1);
        c.b = true;
        System.out.println("[SMS] SMS sent successfully :)");
        c.b = false;
        c.b = false;
        c.b = false;
        c.b = false;
        this = 0;
        if (null != messageconnection_1)
        {
        messageconnection_1.close();
        messageconnection_1 = messageconnection_1;
        System.out.println("[SMS] Close SMS connection error caught!");
        messageconnection_1.printStackTrace();
        }
        throw this;
        if (null != messageconnection_1)
        {
        messageconnection_1.close();
        messageconnection_1 = throw this;
        System.out.println("[SMS] Close SMS connection error caught!");
        messageconnection_1.printStackTrace();
        }
        return c.b;
        }
        大概意思就是如果发送短信返回是:
        return true;
        如果没发送短信返回是:
        return false;


        IP属地:江西来自Android客户端6楼2018-02-20 10:58
        回复
          我们的破解思路是,直接返回return true;只要将收费方法改成:
          public final boolean b()
          {
          return true;
          }
          就行了。
          要怎么修改呢?由于反编后的c.java是不可能编译回去的,这样的话,我们只能修改c.j,通过修改c.j(大部分的c.j通过“jasmin”的编译能够编译成c.class)达到同样的效果。
          修改方法:
          原收费方法public final boolean b()在c.j里的代码如下:
          ...
          ...
          ...
          .method public final b()Z
          .limit stack 2
          .limit locals 3
          aconst_null
          astore_1
          Label2:
          aload_0
          getfield c/c Ljava/lang/String;
          invokestatic javax/microedition/io/Connector/open(Ljava/lang/String;)Ljavax/microedition/io/Connection;
          checkcast javax/wireless/messaging/MessageConnection
          dup
          astore_1
          ...
          ...
          ...
          .catch java/lang/SecurityException from Label2 to Label64 using Label83
          .catch java/lang/Exception from Label2 to Label64 using Label91
          .catch all from Label2 to Label99 using Label99
          .catch java/io/IOException from Label132 to Label138 using Label141
          .catch java/io/IOException from Label104 to Label110 using Label113
          .end method
          ...
          ...
          ...


          IP属地:江西来自Android客户端7楼2018-02-20 10:59
          回复
            我们只要把这短方法改成:
            .method public final b()Z
            .limit stack 2
            .limit locals 3
            aconst_null
            iconst_1
            ireturn
            .end method
            (!!)同时还要注意:
            手机上的审核工具“preverifier”在审核时如果c.j中有lcd""是审核不能通过的,我们必须把lcd""改成lcd" "就是在""中加空格。


            IP属地:江西来自Android客户端8楼2018-02-20 10:59
            回复
              再接着,用jasmin对c.j进行编译成为c.class后,用jclazzme反编成c.java看一下收费方法。
              c.java代码变成:
              public final class c
              {
              private String a;
              private static boolean b;
              private String c;
              private static c d;
              public static c a()
              {
              if (null == c.d)
              {
              c.d = new c();
              }
              else
              {
              c.d.c();
              }
              return c.d;
              }
              private c()
              {
              c();
              }
              public final synchronized void a(String string_1, String string_2)
              {
              c = new StringBuffer("sms://").append(string_1).toString();
              if ((null == "") || (0 != string_2))
              {
              string_2 = "[WARN] Error formatted message!";
              }
              a = string_2;
              System.out.println(new StringBuffer("[SMS] ").append(string_2).toString());
              c.b = false;
              }
              public final boolean b()
              {
              return true;
              }
              private void c()
              {
              c.b = false;
              c = null;
              a = null;
              }
              }
              c.java中收费方法变成:
              public final boolean b()
              {
              return true;
              }
              这样就修改完成了。


              IP属地:江西来自Android客户端9楼2018-02-20 11:00
              回复
                最后接下来,用“preverifier”进行审核,审核完成后,用“minicommander”把修改、审核后的c.class压缩到“sys.zip”里,把原来的c.class代替,然后把sys.zip的后缀去掉,到手机里改成sys.jar。
                这样就破解完成了。


                IP属地:江西来自Android客户端11楼2018-02-20 11:01
                回复
                  广告
                  立即查看
                  接下来,说一下怎修改文字,如:加上“由[爱无伤]分享”这样的文字。
                  首先,用“classtranslate”打开zip文件。找到一些“只需2元,就……”这样的句子。确定好在哪个类里面后,用"minicommander"将这个.class解压出来,退出。用“classtranslator”打开.class然后修改里面的文字,并保存。


                  IP属地:江西来自Android客户端12楼2018-02-20 11:01
                  回复
                    最后,就是用minicommander进行替换.class文件。
                    (!!!) 注意》1:由于编码的问题,如果收费的类里有中文,就会出现乱码,这样可以通过classtranslator进行修改;还有在.j的文件中不能出现“\”。如果要用“\n”换行也用classtranslator。
                    注意》2:由于软件本身问题有些脱壳成的.j用jasmin编译不了,这样就用电脑破解吧。


                    IP属地:江西来自Android客户端13楼2018-02-20 11:02
                    回复
                      你是电,你是光,你是唯一的神话


                      IP属地:上海来自Android客户端14楼2018-04-19 12:34
                      回复
                        NB


                        IP属地:内蒙古来自Android客户端15楼2018-04-28 00:38
                        回复
                          大坏蛋,可以出一个把jar里的增值去掉的教程吗?


                          IP属地:广东来自Android客户端16楼2018-04-30 22:08
                          收起回复