0

我需要检测正在运行的进程中的某些文件。到目前为止,我已经通过计算整个 exe 文件的 MD5 来做到这一点。这种方法有一个错误:通过编辑图标,在此处添加字节或更改 PE 标头中的某些内容,哈希是不同的。有了这些信息,它就是“如何比较要评估为相同的不同文件”,这有点模糊,所以让它如何比较 .exe 文件的两个可执行部分(忽略、标题、资源等)。哪些零件不能更改以保持相同的功能?这可能不是最终的答案,因为有几种方法可以表示相同的功能。例如用 unicode 替换字符串或只是更改该字符串。

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

我更喜欢 C# 代码,因为应用程序位于 .NET 中,但我将不胜感激有关此主题的任何建议或想法。

4

2 回答 2

0

你会发现你想做的事情可能相当困难。您可以在此处下载 MS 可执行格式:http: //msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx

于 2013-10-27T14:24:32.477 回答
-1

您可以将文件二进制文件加载到 SOUNDEX 算法(但对于数字),然后以指定的精度进行比较。我不知道它是如何工作的,但如果更改图标只更改小字节码部分,它应该可以正常工作。

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

于 2013-10-27T15:21:05.723 回答