1

例如,我有 2 个来自 C64 的磁盘映像:

  • disk1 这是一个游戏,它以一些启动画面和音乐开始。
  • diks2 这是一个演示,包含许多歌曲和与第一张磁盘相同的音乐。

是否有机会使用一些十六进制编辑器检查 2 个图像,我可以在 2 个文件中的某个点看到相同的模式二进制序列?它们会以相同的方式存储吗?如果是的话,匹配模式的正确方法是什么?

(目标是在 150k+ 的程序文件中搜索该歌曲并查看它在哪个磁盘中使用)

4

1 回答 1

1

不幸的是,答案是视情况而定。我将在这里概述一些依赖项。

  1. 演示通常包含游戏的翻录音乐,或者较新的游戏可能包含某些演示的著名音乐。在这两种情况下,音乐是相同的,音乐的播放器也是相同的,因为播放器大部分时间都是音乐本身不可或缺的一部分。因此,在这种基本情况下,使用相同的二进制数据序列,并且以一种或另一种形式在磁盘上。
  2. 演示通常会压缩其内容以加快加载速度或创建更小的程序。在那种情况下,二进制数据的序列肯定是不同的。您可以检查在演示开始时是否有一些来自解压缩的“噪音”,通常是边框中的颜色线条,或更新屏幕上的字符。
  3. 一些较大的游戏也会压缩加载的内容,例如 GI Joe。然后光盘上的不同序列。一些用于破解的内存转储工具,例如ISEPIC,也压缩了内存映像。
  4. 一些游戏甚至对其内容进行了加密,例如 Bards Tale 2。然后在光盘上再次出现不同的序列。直到您拆卸游戏的加载程序,您才能知道。

在 2 - 4 的情况下,没有希望。(我不知道您正在查看的游戏或演示的确切类型。)

  1. 此外,光盘映像具有一定的布局,请参阅http://unusedino.de/ec64/technical/formats/d64.html鉴于此,相同的字节序列将分配到光盘的不同扇区。这些扇区也不是按顺序排列的,而是(不是真的)随机的。除非您要查找的数据小于磁盘扇区,即小于 256 字节,否则这些序列不太可能在相同的磁道和扇区上处于相同的序列中。因此,除非文件相同并以相同的顺序复制到光盘上,否则您会得到不同的序列

给出第 5 点,我说即使没有压缩或加密,您也很可能不会以相同的顺序找到序列。

您可以查找 256 字节的序列块。但是音乐的开头可能不同,因此即使扇区也可能具有不同的数据,因为例如一个扇区包含从偏移量 0 开始的音乐,而另一个包含从偏移量 15 开始的音乐。

您至少需要查看保存在图像上的文件。您可以很容易地解析光盘映像的 FAT 并找到文件。文件是一系列磁道和扇区号。您可以将它们加载到内存中。然后比较这些文件。在这里,您需要使用在其他字节数组中查找部分字节数组的算法,因为演示的任何部分都可能是音乐,它可能在游戏代码的任何部分中。因为现代标准的数据非常小,暴力甚至可能起作用。

  1. 一些罕见的游戏使用自己的光盘布局,只加载曲目和扇区,大概是为了更快地加载或复制保护。在这些情况下,你会迷路。
于 2016-07-03T20:52:45.260 回答