我有几个游戏(免费,但源代码封闭),我正在编辑它们以改变某个功能,使其不那么烦人。它本质上是暂停 - 抱歉,什么也做不了!事情。我摆弄了 disassem\debuggers 并找到了控制它的 JNE 代码,我可以将其编辑为 JMP 以绕过烦人的行为。问题是每个文件中大约有 30 个实例,并且位置和 # 可能因文件而异,并且这样做很乏味。我发现了 2 个可以找到所有实例的模式:
84 C0 74 ** B8 ** ** 4A 00
84 C0 74 ** E8 ** ** ** 00
我想要做的是将 74 改为 EB。
84 C0 EB ** B8 ** ** 4A 00
84 C0 EB ** E8 ** ** ** 00
我花了一些时间研究各种十六进制编辑器(Windows),但没有找到具有这种功能的任何编辑器。是否有脚本语言可以提供帮助?或者我尚未找到的某些程序?(我知道一些 c#\vb\java,所以难度不大)
答案1
在 Ruby 中:
regex = /84 C0 74 \*\* B8 \*\* \*\* 4A 00/
regex2 = /84 C0 74 \*\* E8 \*\* \*\* \*\* 00/
File.open("your file", "rb+") do |file|
file.gsub! regex, '84 C0 EB ** B8 ** ** 4A 00'
file.gsub! regex2 '84 C0 EB ** E8 ** ** ** 00'
end
但是,我不太熟悉二进制的编写方式,所以这种方法可能有效,也可能无效。所以请备份。你的毛囊会感谢你的。
编辑:另外请记住,如果您尝试修改封闭源代码,您将使保修、可能还有 EULA、可执行文件所具有的任何签名以及秘密妖精的信任失效。只是说说而已。