【发布时间】:2016-05-09 07:11:27
【问题描述】:
很久以前,出于好奇,我尝试对游戏“Dangerous Dave”的可执行文件进行十六进制编辑。 我在文件中查看了我能找到的任何字符串,并进行了一些随机编辑,看看它是否真的会改变游戏中显示的文本。
我很惊讶地看到结果,我现在使用十六进制编辑器和 DOSBox 重新创建了它:
可以看出,编辑字符串“ROMERO”中的两个字符“RO”导致4个字符被改变,结果变成了“ZUMEZU”。似乎程序正在重用这两个字符并在该字符串的开头和结尾打印它们。
这是什么原因?我的第一个猜测是尝试使可执行文件更小,但仅重用字符的代码可能需要比保存的 2 个字节更多的空间。 这只是作者的一个技巧,还是只是一些编译器的巫术?
【问题讨论】: