查看可执行二进制文件的集合以确定相似性

逆向工程 拆卸 二元分析 工具 自动化
2021-06-30 14:26:53

我有一组不同的二进制文件,我想检查代码的相似性和分类,但我不想在 IDA 中打开每个文件并手动检查 15 个不同示例中的代码。

我可以使用哪些工具或技术来自动分类和确定样本之间的代码相似性/重用?我的第一个想法是使用 ssdeep,但我想知道是否还有其他开源工具或框架可以做到这一点。

我还想请求添加一个分类标签,以防其他人想询问有关根据不同的二进制特征将文件分类到不同组的问题。

1个回答

我在恶意软件分类领域做了一些学术研究。这不是一件容易的事,我不知道你在寻找什么相似性,但我可以列出大多数用于二进制分类的静态特征,至少对于恶意/未知软件。

  • 头信息:动态库、节
  • 文件大小
  • 调试信息
  • 可执行代码:反汇编指令、操作码、字节(如数组、概率向量和 n-gram)、代码流图
  • 数据和字符串
  • 熵可用于不同的部分或整个文件
  • 将一维字节数组映射到二维灰度图像并使用图像分类方法

我们还没有到可以在商业产品中充分使用这些二元特征和机器学习模型的地步。如果您可以容忍某些误报分类,它可能会对您有所帮助。GitHub 有很多恶意软件分类示例可供您处理。