心灵终结3ini吧 关注:11,748贴子:209,816
  • 22回复贴,共1

mix中的文件id

只看楼主收藏回复

介绍下mix中的文件id和红警的文件读取方式,虽然是可以公开可查到的,但在本吧应该不会火星。
(如modenc,xcc官网等。)


IP属地:河南1楼2023-02-02 17:20回复
    开编
    需要写一段时间。
    如果你使用mix编辑器打开mix文件,会看到除了文件名之外,后面还有一串ID

    在使用xcc时对此一定不陌生。


    IP属地:河南2楼2023-02-02 17:22
    回复
      看右侧,正常文件中可见id对应着文件名
      上图加密文件中则不存在文件名

      对mix加密有所了解的话,可以知道,加密是让xcc无法识别,且一般会抹去文件名(。


      IP属地:河南3楼2023-02-02 17:24
      回复
        modenc的说明(机翻):

        但在此你可以知道,xcc内文件名是不存在了,但文件id仍然存在。
        不管怎么折腾,最终还是需要让游戏读取的。
        显然游戏通过id识别文件,而不是文件名。
        西木在mod上非常开放,为什么要这么做?
        或者说…难道原始的mix是开放的吗?

        并不
        可以说XCC本身就是破解mix的解密工具。


        IP属地:河南4楼2023-02-02 17:27
        回复
          在xcc目录可以看到xcc自带的数据库还特意记载了文件名,虽然这是不必要的

          这也就是为什么在其它加密的mix中,可以看到部分正常的文件名。
          那么为什么xcc读取不了其它加密的mix呢?

          不是技术做不到,这对xcc作者没有难度,而是没有进一步去做。
          加密可以说只是一层君子协议,虽然xcc破了西木的加密。


          IP属地:河南5楼2023-02-02 17:30
          回复
            既然知道了红警依靠id读取,文件名不重要,那么id是怎么来的?
            modenc和其参考链接提到了CRC校验

            你可能听说过相关的或与其并列的CRC SHA MD5,不管叫摘要、哈希、散列等都先当是一回事
            摘要算法输入多长,输出长度都是一致的
            ra这里用的是crc32算法,输出固定8位,这意味mod做的越大越容易出现撞名现象233

            所以游戏如何找文件并使用呢?
            在ini中写文件名
            游戏对文件名加上后缀进行计算
            得到crc32,也就是文件id
            通过crc32找到实际文件并使用


            IP属地:河南6楼2023-02-02 17:33
            回复
              实操演示:
              1.找名称与找文件
              对着注册名词典搜索或者开地图编辑器即可

              例如这个狗碟,可见注册名为GOTTER
              (如果rules ini中使用Image=的话,那就另找,所以这个核心看art.ini)
              RA中有许多名称规则,即不在ini中写,但实际上调用时会找相应文件。
              例如此单位:GOTTER,你可以在art在搜到。
              但当去xcc中搜索时,需要加上后缀.vxl

              结果很可能如此--搜不到

              如果搜不到,则查找这个注册程序,并在解密的mix目录下运行一次,如果不行就手动点install。

              这时应该可以搜到了
              但这并不是你想要的,你应该知道这取决于单位的实现,狗碟的真本体是炮塔


              IP属地:河南7楼2023-02-02 17:37
              回复
                虽然art中搜不到GOTTERtur,但xcc能搜到,同样的能搜到其相关的hva


                IP属地:河南8楼2023-02-02 17:41
                回复
                  提醒一下:本吧主旨是让你利用ini等技术在mod里自娱自乐玩出更多花样,不是让你传播破解mix的工具的。
                  所以各种破解他人mod的工具,不要介绍,更别提供下载方式。


                  IP属地:安徽来自Android客户端9楼2023-02-02 17:42
                  收起回复
                    2.说到正题,文件ID与CRC32校验
                    前文提到的狗碟
                    可以看到后面有一串16进制数字:FF603BCF

                    你可以随便找CRC校验网站试试

                    一计算,诶,不对(如果你用的单位名长度是4的倍数,是对的)


                    IP属地:河南10楼2023-02-02 17:44
                    回复
                      这就是为啥有的地方强调注意大小写,或者只需大写小写之类,
                      红警中文件计算是全大写的,而xcc在此做了自动转换

                      你会发现…诶,它还是不对,
                      说明进行了特殊处理。


                      IP属地:河南11楼2023-02-02 17:45
                      回复
                        xcc是开源的
                        可以从源码中找到xcc对名称的处理:

                        这是一些进行验证的输出

                        结果检验是正确的
                        和看上去的不同,实际上暗藏玄只因。
                        特殊符号集中在ASCII前4位,这在复制时会被系统忽略。

                        但输出文件时使用稍专业点的文本编辑器可显示出来


                        IP属地:河南12楼2023-02-02 17:50
                        回复
                          xcc中提到了这位:vladan bato
                          他给出了名称处理的C版源代码


                          IP属地:河南13楼2023-02-02 17:51
                          回复
                            当你知道了算法,你就可以根据ini内文件名获取id,通过id找到mix中对应文件。
                            总结流程:

                            如果你会编程,够闲
                            可以写批量处理程序,通过ini批量提取文件名,对xcc导出的乱码文件进行批量重命名。
                            这样即可恢复实际使用的大部分文件的文件名。
                            如果想了解更多:
                            可以搜ModEnc mix,对此进行了详细说明
                            xcc是开源的 可搜到其官网和github
                            泰伯利亚黎明,红警1,核心源码EA在github公开


                            IP属地:河南14楼2023-02-02 18:13
                            回复
                              有加密mix的工具吗


                              IP属地:北京16楼2024-06-18 10:18
                              收起回复