更改二进制的校验和

问题描述:

如何修改二进制的校验和?
具体来说,我想编辑一个DLL/EXE的嵌入式校验和。
有没有可用的工具?更改二进制的校验和

+1

什么样的二进制?目前还不清楚你在问什么 - 有十六进制编辑器,它允许你编辑一个二进制文件,并将其中的数据的任何部分更改为任何你想要的。你是否想实际编辑二进制文件,使得MD5等校验和的计算方式不同,或者是否希望编辑嵌入校验和而不实际更改文件的其余部分?如果是后者,它是什么样的二进制?不同的二进制格式在不同的地方会有不同的校验和。 – Vicky 2010-04-30 11:45:10

+0

我想编辑dll/exe中的嵌入式校验和。 – anand 2010-04-30 11:54:29

+0

我不确定,但我认为Windows会在运行时检查DLL校验和是否与它自己计算的内容相匹配,如果没有,则会检查它们。 – Vicky 2010-04-30 12:07:23

你可以使用“十六进制编辑器”来修改DLL/EXE,但除非你知道如何反转计算你的校验和,它不会有太大的帮助。

+0

我只想将嵌入式校验和的dll设置为00000000,无法弄清楚我该怎么做? – anand 2010-04-30 12:02:08

+1

底线是你需要更多的信息,而不是你给我们什么类型的校验和。 – NeuroScr 2010-04-30 12:29:41

+0

我在问题中添加了评论。 – anand 2010-04-30 12:36:25

OK,这个链接给你的Windows DLL /可执行文件的文件格式: http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf

你可以看到有在头几个可能palces进行校验可存储,其中一些是可选的,所以你需要解析图像以找出内容。有像Python PE解析器这样的工具可以帮助解决这个问题。

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

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

的Windows只需要校验是= 0内核模块,你!不需要为用户模式模块进行设置。如果您确实想要设置校验和,请运行EDITBIN/RELEASE yourapp.exe,或致电CheckSumMappedFile()。有关校验和算法的分析,请参阅this article