C# 如何计算文件的相似性

C# 如何计算文件的相似性,c#,.net,file,md5,checksum,C#,.net,File,Md5,Checksum,我需要在运行进程中检测某些文件。 到目前为止,我已经通过计算整个exe文件的MD5实现了这一点。这种方法有一个错误:通过编辑图标、在那个里添加字节或更改PE头中的某些内容,散列是不同的。 有了这些信息,就可以比较不同的文件,并将其作为相同的文件进行评估,这有点含糊不清,因此,就可以比较.exe文件的两个可执行部分,忽略头、资源等。。。哪些部件不能更改以保持相同的功能?这可能不是最终的答案,因为有几种方法可以表示相同的功能。例如,用unicode替换字符串或只是更改该字符串 那么,如何计算两个可执

我需要在运行进程中检测某些文件。 到目前为止,我已经通过计算整个exe文件的MD5实现了这一点。这种方法有一个错误:通过编辑图标、在那个里添加字节或更改PE头中的某些内容,散列是不同的。 有了这些信息,就可以比较不同的文件,并将其作为相同的文件进行评估,这有点含糊不清,因此,就可以比较.exe文件的两个可执行部分,忽略头、资源等。。。哪些部件不能更改以保持相同的功能?这可能不是最终的答案,因为有几种方法可以表示相同的功能。例如,用unicode替换字符串或只是更改该字符串

那么,如何计算两个可执行文件的相似性呢


我更喜欢C代码,因为应用程序在.NET中,但如果您能就此问题提供任何建议或想法,我将不胜感激。

您会发现您想做的事情可能非常困难。您可以在此处加载MS可执行文件格式:

您可以将文件二进制文件加载到SOUNDEX algo,但要查看数字,然后以指定的精度进行比较。我不知道它将如何工作,但若改变图标只改变小字节码部分,它应该可以正常工作


我想补充一点,我不知道这对文件有多好,但理论上它应该可以正常工作。

这些.NET可执行文件也是吗?为什么?目标是什么?也许有一个解决方案可以回答另一个问题。不,这些是通用的executables.NET,目标不是检测正在运行的进程。它可能会稍有改变。这是一个防热软件。