C64 识别磁盘映像之间的常见模式

C64 Recognize common patterns between disk images

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

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

(目标是在150k+的程序文件中搜索那首歌,看看它在哪个盘中使用)

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

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

如果是 2 - 4 就没有希望了。 (我不知道您正在查看的游戏或演示的确切类型。)

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

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

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

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

  1. 一些稀有游戏使用它们自己的光盘布局并且只加载轨道和扇区,大概是为了加载更快或复制保护。在这些情况下你迷路了。