例如,我有 2 个来自 C64 的磁盘映像:
- disk1 这是一个游戏,它以一些启动画面和音乐开始。
- diks2 这是一个演示,包含许多歌曲和与第一张磁盘相同的音乐。
是否有机会使用一些十六进制编辑器检查 2 个图像,我可以在 2 个文件中的某个点看到相同的模式二进制序列?它们会以相同的方式存储吗?如果是的话,匹配模式的正确方法是什么?
(目标是在 150k+ 的程序文件中搜索该歌曲并查看它在哪个磁盘中使用)
不幸的是,答案是视情况而定。我将在这里概述一些依赖项。
在 2 - 4 的情况下,没有希望。(我不知道您正在查看的游戏或演示的确切类型。)
给出第 5 点,我说即使没有压缩或加密,您也很可能不会以相同的顺序找到序列。
您可以查找 256 字节的序列块。但是音乐的开头可能不同,因此即使扇区也可能具有不同的数据,因为例如一个扇区包含从偏移量 0 开始的音乐,而另一个包含从偏移量 15 开始的音乐。
您至少需要查看保存在图像上的文件。您可以很容易地解析光盘映像的 FAT 并找到文件。文件是一系列磁道和扇区号。您可以将它们加载到内存中。然后比较这些文件。在这里,您需要使用在其他字节数组中查找部分字节数组的算法,因为演示的任何部分都可能是音乐,它可能在游戏代码的任何部分中。因为现代标准的数据非常小,暴力甚至可能起作用。