文件逆向工程——英雄联盟WAD文件头哈希

逆向工程 文件格式
2021-06-22 23:37:09

我想编辑英雄联盟的 WAD 文件,但游戏开发人员最近决定向这些文件添加一种哈希值,以检查它们的内容是否有效。不幸的是,目前还没有人能够破解密码。我希望有人至少对它可能是什么有一个想法。

以下是我提取的一些文件(“旧”目录中的文件是旧文件,它们也具有可用于比较的哈希值):https : //drive.google.com/file/d/0B5fV4q6wLg7bTUE2VHc5aW5Ca00

未知的“哈希”值是字节 4 到 87(84 字节长)。我开始查看这个 GitHub 项目,但编写代码的人似乎也不知道该标题的含义。我还发现标题的奇怪之处在于它的长度似乎有所不同(在某些文件中,末尾填充了不同数量的空值)。起初我以为他们可能使用的是 SHA 的变体或其他散列算法,但由于长度不同,我不再确定是否是这种情况,而且我绝对不是散列专业人士。

如果有帮助,您还可以下载“Wooxy”程序,一个英雄联盟文件提取器/编辑器程序,以自己提取、编辑和更新游戏文件。

即使您不知道确切答案,也非常感谢您的帮助!

编辑:这是在尝试加载编辑过的 WAD 文件时出现在游戏日志中的内容:

000036.460|  ERROR| ?:0: attempt to call global 'GetHashedGameObjName' (a nil value)
000037.499| ALWAYS| Begin Game Object Update
000037.936| ALWAYS| WadFile mount: DATA/FINAL/Champions/Chogath.wad (FAILED)
000037.937| ALWAYS| Riot::RADS::Reader::SignalSoftRepair: Wrote soft repair file to C:/Riot Games/League of Legends/RADS/solutions/lol_game_client_sln/releases/0.0.1.163/SOFT_REPAIR. This will cause the patcher to repair your installation.
000037.937|  ERROR| Assertion failed!

Expression: ALE-18967997

Description: FATAL ERROR - WadFile mount failed: Champions/Chogath.wad
000039.411|  ERROR| Crash Occurred

编辑 2:字节 88 和 95(8 字节长)之间似乎还有一个未知值。不过,更改字节似乎不会使游戏崩溃。

编辑 3:我发现标题看起来像是分成 2 部分。字节 4 表示头部的总长度(无00填充)。字节 8 表示第一个“块”的长度。在该字节数之后,有一个02,之后的字节表示第二个“块”的长度。在第二位之后,00直到字节 87 为止。

1个回答

原来标题实际上是一个 ECDSA 公钥和签名,所以,根据我读过的内容,如果不使用私钥(我没有)重新签名,基本上不可能修改文件。