我知道一些二进制的diff工具,例如VBinDiff和其他工具。

目前我有大量的二进制文件,大约有500个。二进制文件的区别。

像评估二进制文件10和二进制文件100的区别是56%。二进制50和二进制200的差异为78%。

是否有这样的工具?

谢谢!

#1 楼

您可能想尝试一下ssdeep:ssdeep是用于计算上下文触发的分段哈希(CTPH)的程序。 CTPH也称为模糊哈希,可以匹配具有同调性的输入。这些输入具有相同顺序的相同字节序列,尽管这些序列之间的字节在内容和长度上可能都不同。


评论


您好jvoisin,谢谢您的回答!因此,诸如VBinDiff之类的工具可以以十六进制突出显示所有不同的字节,我正在考虑寻找一种工具来汇总所有突出显示的字节,从而可以获取不同字节的数量...您知道某些这样的工具吗?

– lllllllllllll
2014年1月21日在18:03

嗨,jvoisin,我终于找到了怎么做,我写下来了。

– lllllllllllll
2014年1月21日在18:34

#2 楼

这是我的解决方案。



我使用radiff2找出二进制文件之间的所有差异。

radiff2 binary1 binary2



然后xxd将二进制转换为十六进制

xxd -p  final



之后,wc找出一个二进制中的十六进制数

wc -c outputhex
wc -l newlineneedtodelete


现在我有了两个二进制文件之间的区别以及每个二进制文件中十六进制的总数。一个简单的划分可以找出我想要的差异百分比。


#3 楼

假设您要相互比较〜500个二进制文件,那么您真正想要的是VxClass。不幸的是,Zynamics / Google不再销售VxClass。如果有人知道如何购买或下载它,请随时在此处共享信息。

评论


顺便说一句,您可能可以通过BinDiff / DarunGrim / etc重新实现VxClass的功能。和自定义代码,但这将是不平凡的。

–詹森·格夫纳(Jason Geffner)
2014年1月22日,1:15

zynamics @ google员工在这里:不幸的是,没有办法购买vxclass,我认为将来不会改变。

– newgre
2014年1月22日14:31

#4 楼

这可能超出正常的反向工程师的工具范围,但仍有可能。西葫芦是Chromium以及Chrome背后的更新机制的代号。 Quote:


西葫芦将程序转换为原始汇编语言,并在汇编级别进行区分:

server:
    asm_old = disassemble(original)
    asm_new = disassemble(update)
    asm_new_adjusted = adjust(asm_new, asm_old)
    asm_diff = bsdiff(asm_old, asm_new_adjusted)
    transmit asm_diff

client:
    receive asm_diff
    asm_old = disassemble(original)
    asm_new_adjusted = bspatch(asm_old, asm_diff)
    update = assemble(asm_new_adjusted)



当然,这受CPU架构数量的限制。您没有陈述您的要求(除非它是用不可见像素写的;))