更改二进制文件的校验和

3

如何修改二进制文件的校验和?
具体来说,我想编辑dll/exe中嵌入的校验和。
是否有可用的工具?


1
什么样的二进制文件?不清楚你在问什么 - 有十六进制编辑器可以让你编辑二进制文件并将其中任何数据部分更改为你想要的内容。你是想实际编辑二进制文件本身,使像MD5这样的校验和计算结果不同,还是想在不实际更改文件其余部分的情况下编辑嵌入式校验和?如果是后者,那么它是什么样的二进制文件?不同的二进制格式将在不同的位置具有不同的校验和。 - Vicky
我想编辑dll/exe中的嵌入式校验和。 - anand
我不确定,但我认为Windows在运行时检查DLL的校验和是否与其自己计算的匹配,如果不匹配,则会出现错误。 - Vicky
1
好的,我正在调试一个崩溃转储文件,其中一个模块显示出校验和为00000000。这种情况下具有校验和00000000有点可疑。如果我想要调试这个崩溃,我需要放置一个具有相同校验和的二进制文件。 - anand
3个回答

1

Windows只要求内核模块的校验和!=0,对于用户模式模块,您不需要设置它。如果您真的想设置校验和,请运行EDITBIN /RELEASE yourapp.exe,或调用CheckSumMappedFile()。请参阅this article以分析校验和算法。


0

你可以使用“十六进制编辑器”来修改dll/exe文件,但是除非你知道如何反向计算校验和,否则它并没有太大的帮助。


我只想将一个dll的嵌入式校验和放置在00000000,但是不知道如何实现。 - anand
1
底线是,关于什么类型的校验和,你需要提供比现在更多的信息。 - NeuroScr
我已经在问题中添加了注释。 - anand

0

好的,这个链接提供了Windows DLLs/Executables的文件格式: http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf

你可以看到头部有几个可能存储校验和的位置,其中一些是可选的,所以你需要解析图像来找出里面的内容。有一些像Python PE解析器(谷歌搜索选项)的工具可以帮助你完成这个任务。

一旦你知道要更改哪些字节,就选择一个十六进制编辑器进行操作。你甚至可以在Visual Studio中编辑二进制文件。

[编辑:但是,正如我上面评论的那样,如果它与预期值不匹配,我认为Windows可能会拒绝它]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接