mix不要不要加密了
背景知识:TS / RA2 Mix文件由标题,索引和主体组成。标头包含有关MIX的基本信息(它具有校验和,是否已加密,其中有多少文件,有多大)。索引包括混合中每个文件的大小,位置和校验和,正文包含实际文件。那里有两个主要的“ MIX保护器”或“ Leechkiller”程序,它们会以某种方式处理头文件(特别是内部文件的大小),以使RA2能够正确读取混合,但XCC Mixer会拒绝打开它。它们都在基本相同的原理下运行。首先,有必要了解标题的布局。前四个字节是加密和校验和标志。如果MIX具有加密的标头(请不要与“ protected”混淆:“ encrypted”是指Westwood自己使用的Blowfish加密; XCC对此没有问题)标志是00 02 0000。如果MIX有一个校验和,标志是00 01 0000。当前的MIX Protector程序都不能在带有加密头的文件上工作,(尽管可以稍加修改以使其变通),所以我现在就不讨论它了。 。在未加密的MIX(即您将需要破坏的所有MIX)上,这些标志带有“标头”。标头由一个等于MIX中文件数量的16位整数和一个等于MIX主体大小(MIX文件的大小减去标头和索引的大小)组成的32位整数)。这些数字是“ big-endian”,这意味着字节向后排列(但每个字节中的位正常排列)。(这是因为Intel x86体系结构是半延迟的)。因此,如果字节04和05(文件数)为0xB801,则需要将其重新排列为0x01B8以获取实际的文件数。(十进制的0x01B8为440,如有必要,您可以使用Google计算器进行转换。)旁注:这意味着在RA2引擎下,大于2 GB或包含32,765个以上文件的MIX文件是不可能的。因此,到目前为止,这是一张大图:MIX的前几个字节是字节00:始终为00字节01:如果校验和为01,则为02,如果加密则为02,否则为00。受保护的混合物应始终为00。字节02:始终为00(VK的Mix Protector将用垃圾覆盖它)字节03:始终为00(VK的Mix Protector将用垃圾覆盖它)字节04-05:包含文件数的大端数字。字节06-09:包含MIX主体大小的大端数字。(LeechKiller和VK的Mix Protector都将用垃圾覆盖字节06和07)。然后,您将拥有索引(每个索引条目12个字节),然后是正文。所有“ MIX保护器”所做的就是在机身尺寸上增加一些数字。XCC混合器在读取MIX时首先检查主体大小,如果标头中的主体大小大于实际主体大小,则拒绝MIX。(如果我拥有XCC源代码,则可以轻松解决此问题,尽管它托管在sourceforge上,但我似乎无法在XCC网站上找到它。Strange。)这样做是为了避免访问未分配的内存并崩溃。细分错误。另一方面,红色警报2显然只是忽略标头中的正文大小,而完全对索引中的信息进行操作。从理论上讲。我想“受保护的”混合可能会导致RA2超出范围访问内存并崩溃,但是我还没有看到这种情况的发生。无论如何,VK的Mix Protector显然只是在字节06上加上2,从而导致XCCU失败,但易于修复MIX文件。XRML LeechKiller会在06-07字节中添加一个随机的16位值,这会增加难度。要修复“受保护的” MIX,您需要重新计算主体大小,并使用十六进制编辑器将其写入字节06-09中。要计算主体大小,请通过右键单击文件并单击“属性”来获取实际文件大小。Windows应为您提供大小:n MB(x字节)。(忽略“磁盘大小”)。取字节数并应用以下公式:BodySize = FileSiz((NumberOfFilesInMix * 12)+ 10)您会看到,每个文件的索引都有十二个字节,标头有四个字节用于标志,两个字节用于标记文件和四个字节的正文大小。别忘了,文件的大小和数量都是big-endian格式的,必须这样插入。简短形式的教程:1)抓住您最喜欢的十六进制编辑器并打开受保护的混音。2)确保前四个字节(字节00-03)为0x00000000。3)读取接下来的两个字节(字节04-05)并颠倒顺序(例如b8 01变为01 b8)。这是文件数。将其从十六进制转换为十进制。4)将文件数乘以12。然后加10。我们将此数字称为H。5)取文件大小。我们将其称为F。6)F-H =B。7)将B转换为十六进制。用零填充正面,直到长度为八位十六进制数字。以大字节序重新排列字节(例如00 94 26 7F变为7F 26 94 00)8)用此更正后的值覆盖接下来的四个字节(字节06-09)。9)保存MIX文件并退出十六进制编辑器。注意:这不会恢复MIX中每个文件的文件名。那些永远消失了。