永远的玛丽吧 关注:4,869贴子:242,996

哈哈,终于知道用MW生成的mfl文件和mfs文件的结构了,发帖庆祝!

只看楼主收藏回复

啦啦啦~~~


1楼2009-08-19 12:33回复
    结论1:
    二者均使用GZip格式压缩,可以轻松地使用 WinRAR或 7-Zip 打开
    结论2:
    打开后里面是一个纯文本文件,至于如何从里面提取信息嘛,呵呵,先留个悬念,以后再说!呵呵~


    2楼2009-08-19 12:36
    回复
      2025-08-30 20:34:59
      广告
      不感兴趣
      开通SVIP免广告
      3楼2009-08-19 12:37
      回复
        mfsx文件就是解压缩后的mfs文件


        4楼2009-08-19 13:43
        回复
          啊!!!


          IP属地:吉林5楼2009-08-19 13:56
          回复
            OK,下面我将分成几部分来介绍mflx(让我们暂时把解压缩后的MFL文件称为mflx文件吧~~) 而解压后的mfs文件就是mfsx文件。
            1.MFLX文件的结构。
            2.MFSX文件的结构。
            3.如何把MFS文件反编译为MFL文件(我们的终极目标!!呵呵)
            下面开始——————在我说THE END之前禁止插楼,呵呵!


            6楼2009-08-19 16:33
            回复
              1.MFLX文件的结构.
              1)头部(Header):
              我们把BlocksDataStart之前的数据称为MFLX文件的头部,这一部分储存着关卡的基本信息,一共10行,大多可以在PREF'S部分设置。
              行          含义              举例            举例释义     
              1          (关卡长度*32)+10       6410        关卡长度=(6410-10)/32=200     
              2          (关卡高度*32)+10       650        关卡高度=(650-10)/32=20
              3         关卡名称             1-1            关卡名为1-1
              4          关卡作者             _AgOH          关卡作者为_AgOH
              5         关卡时间              400           关卡时间为400s
              6         重力(1-5)          4             重力为4
              7         库巴能量              10            库巴一共10格能量
              8         水的深度信息          1900          这个数据的计算方法较为复杂,
                                                           目前尚在研究当中,数值越大,
                                                           水就越浅
              9         关卡背景              3             第3个背景(GRASSLANDS)
              10        背景音乐             7             音乐7(Map2)       


              7楼2009-08-19 17:33
              回复
                2)方格数据(BlocksData)
                下面我们就要进入mflx的核心了,这一部分存储的是Blocks的信息,其内容介于BlocksDataStart与BlocksEnd之间。咋一眼看去,哇,都是0101,看不懂?其实,不要担心,这不是2进制数据,更不是乱码,而是每一个方格的Block信息!其实SoftEndo在这一点上的处理相当弱智------他居然使用遍历的方法,每一个方格的信息都写入,即使这是个空的方格!
                BlocksData一共分为n行,每一行对应关卡的一行,例如关卡的高度为50,那么一共就50行。每一个方格占用2个字节储存信息,例如关卡长度为300,那么每一行就有600个字节。储存每个方格Block信息的是利用对应Block的ID,如水管管体左部为17,右部为18,而如果什么都没有就用00来存储(具体每个Block的ID是什么就不说了,相信大家也不太需要这些数据。了解了这个规则,再看一看文件,不可思议的事情发生了:由1~9这9个数字居然组成了这个地图!多么完美的地形!!!


                8楼2009-08-19 18:38
                回复
                  2025-08-30 20:28:59
                  广告
                  不感兴趣
                  开通SVIP免广告
                  3)其它数据(Other Data)
                  上面说得这么多,您可能要说了:关卡的内容不仅仅是Blocks啊,还有风景(Scenery)、敌人(Enemies)等,呵呵,不要着急,BlocksEnd下面还有东西呢!
                  BlocksEnd下的数据分为若干行,每一行有11个字节,不过这些数据就更难解读了,先来说说基本格式吧:
                  21800160480
                  218:物品ID 0016:物品X坐标(是乘上8之后的结果) 0480物品Y坐标(是乘上32后的结果)
                  这里坐标的计算原则与我们平时不相同,左上角为(0,0)往右X坐标增加,往下Y坐标增加
                  因此,上面的数据被解析为:在坐标(2,15)下放一个实心块(实心块的ID为218)
                  又如:
                  00108160448
                  含义为:在坐标(102(=816/8),14(=448/32))下放一个Gommba(ID=001)
                  具体的物品与其ID的关系,有兴趣的朋友们可以去研究研究~
                  OK,貌似这个文件都分析完了?不对,后面怎么还有三个小黑块??呵呵,其实这个并不是什么神秘的东西,它只是标记这个文件的结束罢了~呵呵~
                  OK,mfl分析完了,下面该分析MFS了。。。


                  9楼2009-08-19 19:08
                  回复
                    2.mfsx文件的结构.
                    其实mfsx文件就是几个mflx的简单拼接,并未经过任何特殊处理,因此要反编译这些文件是相当简单的!!当然mw为了识别每一个关卡,还是要加一些分界线的,好了,现在什么都不说了,立刻开始吧!!
                    1)头部(Header)
                    除了mfl文件之外,mfs文件还要储存一些特殊信息,但是这样的信息只有1项:Mario的生命数,所以MFS文件的头部也只有1行!这一行就是Mario 的生命数,如15。
                    下面就是mfsx文件的主体了。
                    2)关卡分界线(New Level)
                    在mfs里,New Level字符的出现,将意味着一个mfl文件的结束(关卡1除外),以及另外一个mfl的开始。所以,New Level就是关卡的分界线啦~
                    3)小关卡主体(MFL Body)
                    在两个New Level之间的数据是这个关卡的主体,将它提取出来就是mflx文件啦!其实这就是反编译的原理,后面我会详细介绍~
                    4) 结束标志(The End)
                    与mflx相同,mfsx同样使用一个小黑块作为文件结束标志。


                    10楼2009-08-19 19:21
                    回复
                      3.如何把mfs文件反编译为mfl文件。
                      其实可能部分朋友看到这里已经学会反编译的方法,不过为了方便新手们学习,这里还是在唠叨几句k~
                      所需工具:支持GZip解压缩的工具(如WinRAR、7-Zip、GZip等)、支持GZip压缩的工具(如7-Zip、GZip等)、一个mfs地图文件。
                      OK,操作开始----
                      1.使用GZip解压工具打开MFS文件,提取出里面的MFSX文件。
                      2.仿照2.3的方法,从里面提取出mflx文件。
                      3.使用GZip解压工具将mflx文件压缩,然后扩展名改为mfl。
                      OK,现在------大功告成!用MW打开反编译后的MFL文件,看看我们是不是成功了!
                      --------------THE END------------
                      另外,此贴申精,毕竟它费了我不少的时间哈!!感谢大家支持!
                      


                      11楼2009-08-19 19:36
                      回复
                        楼主太强大了@_*...


                        IP属地:中国香港12楼2009-08-20 08:52
                        回复
                          唉~顶的人太少了~它可是花费了我3个多小时研究出来的成果啊


                          13楼2009-08-20 09:47
                          回复
                            还是再发个图片吧~反编译后的HLCrazyWorld6-1(说明:绝无恶意,仅供学习研究之用,请HL不要见怪~)


                            14楼2009-08-20 10:00
                            回复
                              2025-08-30 20:22:59
                              广告
                              不感兴趣
                              开通SVIP免广告
                              ding


                              15楼2009-08-20 10:22
                              回复