我需要检测正在运行的进程中的某个文件。 到目前为止,我通过计算整个exe文件的MD5来完成此操作。这种方法有一个错误:通过编辑图标,在那里添加字节或在PE头中更改某些内容,哈希是不同的。 有了这些信息,它就是“如何比较不同文件被评估为同一个”,这有点模糊,所以如何比较.exe文件的两个可执行部分(忽略,标题,资源等......)。哪些部件为了保持相同的功能而无法更改?这可能不是最终的答案,因为有几种方法来表示相同的功能。例如,用unicode替换字符串或只更改该字符串。
那么如何计算两个可执行文件的相似性?
我更喜欢C#代码,因为应用程序是在.NET中,但我会很感激有关此主题的任何建议或想法。
答案 0 :(得分:0)
你会发现你想要做的事情可能会非常困难。您可以在此处输入MS可执行格式:http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx
答案 1 :(得分:-1)
您可以将文件二进制文件加载到SOUNDEX算法(但是对于数字),然后将它们与指定的精度进行比较。我不知道它是如何工作的,但如果更改图标只会改变小字节码部分,它应该可以正常工作。
我想补充一点,我不知道这对文件有多好,但理论上应该可以正常工作。