您可以使用十六进制编辑器编辑您想要的任何内容。有多种方法可以“隐藏”整个文件,但是只要您可以使它们可见并使用十六进制编辑器打开,就无法使文件的某些部分不可见。(1)
但是......你需要在你正在改变的框架内工作。假设您编辑了一个简单的 BMP 图像,并将其大小从 1x1“更改”为 2x2。那会“工作”吗?不 - 您正在更改重要属性(图像大小)而不是实际图像,并且没有程序可以再读取您修改后的 BMP 图像,因为它现在需要2x2 图像。
但是,如果您只更改图像内部一个像素的颜色,则没有问题。BMP 文件不包含校验和,因此您更改的文件将被正确读取。
您的“Sonic”示例也是如此。是的,您可以修改单个指令——但是(在整个可执行文件的约束范围内)您不能“插入”或“删除”它们。在更改单个指令之前,您需要绝对确定它是单个指令,而不是先前多字节指令的一部分。如果您正在查看原始十六进制转储,这可能很难看出。
第三个问题可能是文件被加密或以其他方式防止篡改(例如,使用上述校验和)。如果是这种情况,您可以随心所欲地查看,但找不到任何有用的更改;或者,更改数据可能会使程序停止运行(即,如果检测到原始数据已被修改)。
(1) 在软盘和 CD-ROM 时代,有一些方法可以使磁盘扇区无效。这样,“文件”就无法复制到其他媒体或使用常规磁盘编辑器打开。当然,阅读应用程序“知道”哪些扇区已损坏并且不会尝试访问它们。