minecraft吧 关注:2,544,136贴子:31,815,980

傻瓜式Java版反混淆工具DecompilerMC

取消只看楼主收藏回复

这个工具是中译群一个dalao告诉我的。
反混淆后代码片段


IP属地:浙江1楼2020-01-01 19:33回复
    好像直接搜这个工具的名字搜不到


    IP属地:浙江2楼2020-01-01 19:33
    回复
      Python版(下载最快):github点com斜杠hube12斜杠DecompilerMC
      非Python版:github点com斜杠hube12斜杠DecompilerMC斜杠releases斜杠tag斜杠0.4


      IP属地:浙江4楼2020-01-01 19:37
      收起回复
        工具为英文命令行界面。下面是简短的教程(我用的是Python版,但别的版本应该也一样)
        打开工具后,第一行会显示:
        Decompiling using official mojang mappings...
        第二行是一个问题:
        Do you want to clean up some leftovers? (y/n):
        这个问题问你是不是要清理遗留文件。第一次打开工具时是没有所谓遗留文件的,但输入y会安心一点。如果不是第一次使用工具,那么请根据需要输入y或者n,因为清理掉遗留文件后,重新下载所需文件是需要时间的。
        下一个问题:
        Please input you decompiler choice: fernflower (f) or cfr (default: cfr) :
        这个问题问你要用哪个程序来反编译,fernflower或是cfr。据说cfr速度更快,而且默认是cfr,直接换行跳过就行了。
        下一个:
        Please input a valid version starting from 19w36a and 1.14.4 :
        问你要反编译哪个版本,至少为Java版19w36a或1.14.1。我输入的是1.15.1,大家根据自己需要来输入。
        下一个:
        Please select either client or server side (c/s) :
        问你要反编译客户端还是服务端。我选的是客户端(输入c),因为我们玩的基本都是客户端。服务端则输入s。
        下一个:
        Auto Mode? (y/n):
        输入y,则进入自动模式,然后你就能听音乐享受反混淆过程了,但必须联网!
        输入n,则下面会有几个新的问题要问你,基本是关于要不要下载什么文件之类的。


        IP属地:浙江本楼含有高级字体5楼2020-01-01 19:55
        收起回复
          输入n后的非自动模式:
          问题:
          Download mappings? (y/n):
          问你要不要下载映射表。如果你已经有了对应版本的映射表,就确保映射表处于工具文件夹里的正确位置,并输入n。否则输入y。
          下一个:
          Remap mappings to tsrg? (y/n):
          问你是不是要把映射表从proguard格式转换为tsrg格式。默认为y。我也不知道转不转换的效果上的区别。
          下一个:
          Get {version}-{type}.jar ? (y/n):
          问你要不要下载游戏jar本体。如果你已经有了对应版本的jar文件,就确保它处于工具文件夹内的正确位置,并输入n。否则输入y。
          下一个:
          Remap? (y/n):
          问你要不要映射一遍。第一次使用肯定要y,别的情况我就不知道了。
          下一个:
          Decompile? (y/n):
          输入y。


          IP属地:浙江本楼含有高级字体6楼2020-01-01 20:05
          回复
            ===FINISHED===
            output is in /src/{version}
            Press Enter key to exit
            等这些文字出现,按下换行,就好了。可读的代码在src文件夹下的以版本号为名的文件夹内。


            IP属地:浙江7楼2020-01-01 20:07
            回复
              客户端代码的层次结构

              com文件夹里是mojang制作的库。Mojang的游戏引擎Blaze3d就在里面,还有数学库、Realms客户端api。
              net文件夹里是游戏本体代码。

              代码被分成了许多组。大家应该比较感兴趣的是方块、实体、生物AI之类的东西,相关代码在world文件夹下。

              就是这些。至于能不能看懂代码就依赖于java和英语的水平了。


              IP属地:浙江8楼2020-01-01 20:17
              回复
                结束


                IP属地:浙江9楼2020-01-01 20:18
                回复
                  顶。。


                  IP属地:浙江10楼2020-01-02 17:34
                  回复
                    真的这么容易沉吗。。


                    IP属地:浙江11楼2020-01-03 20:23
                    回复
                      如何知道幻翼只攻击玩家?
                      我们从幻翼的文件Phantom.java中,找到了注册AI的函数:

                      选中的一行,表示注册一个AI,令幻翼以玩家为攻击目标。因为没有注册别的攻击目标AI,所以幻翼只攻击玩家。


                      IP属地:浙江15楼2020-01-03 21:40
                      回复
                        如何知道唤魔者召唤恼鬼的条件?
                        我们从唤魔者的文件Evoker.java中,找到了恼鬼召唤AI的启用判定函数

                        选中的两行表示,统计以唤魔者为中心的半径16格范围内的恼鬼个数,以恼鬼个数来决定召唤恼鬼的几率。没有恼鬼时几率为100%;8个及以上个恼鬼时,机率为0%;1~7个时,几率与个数称线性关系。
                        因此你初见唤魔者时,它一定召唤恼鬼而不是尖牙,因为没有现成的恼鬼。


                        IP属地:浙江本楼含有高级字体16楼2020-01-03 21:48
                        收起回复
                          如何得知远古守卫者激光充能快于普通守卫者?
                          我们从守卫者的文件Guardian.java里找到了攻击时间的函数:

                          由此可知普通守卫者的激光需要80tick充能,即4秒。
                          这是远古守卫者的文件ElderGuardian.java里的攻击事件函数:

                          由此可知远古守卫者的激光需要60tick充能,即3秒。
                          因为elder,所以-1s。


                          IP属地:浙江17楼2020-01-03 21:55
                          回复
                            这么好的东西没人顶一下吗


                            IP属地:浙江18楼2020-01-06 18:43
                            回复
                              windows版
                              链接: pan点baidu点com斜杠s斜杠1HyErSY2OhQAahpOaKIdGGA
                              提取码: kh24


                              IP属地:浙江21楼2020-01-08 18:16
                              收起回复