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