【问题标题】:How to compute similarity of files如何计算文件的相似度
【发布时间】:2013-10-27 13:36:41
【问题描述】:

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

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

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

【问题讨论】:

  • 这些也是.NET可执行文件吗?
  • 为什么?目标是什么?也许有一个解决方案可以回答另一个问题。
  • 不,这些是通用可执行文件(.NET 和 NOT) 目标是检测正在运行的进程(可能会稍作更改)它是一个反作弊软件。

标签: c# .net file md5 checksum


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 2012-02-12
      • 1970-01-01
      • 2023-03-24
      • 2018-03-03
      • 2012-02-12
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多