目前我有大量的二进制文件,大约有500个。二进制文件的区别。
像评估二进制文件10和二进制文件100的区别是56%。二进制50和二进制200的差异为78%。
是否有这样的工具?
谢谢!
#1 楼
您可能想尝试一下ssdeep:ssdeep是用于计算上下文触发的分段哈希(CTPH)的程序。 CTPH也称为模糊哈希,可以匹配具有同调性的输入。这些输入具有相同顺序的相同字节序列,尽管这些序列之间的字节在内容和长度上可能都不同。#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架构数量的限制。您没有陈述您的要求(除非它是用不可见像素写的;))
评论
您好jvoisin,谢谢您的回答!因此,诸如VBinDiff之类的工具可以以十六进制突出显示所有不同的字节,我正在考虑寻找一种工具来汇总所有突出显示的字节,从而可以获取不同字节的数量...您知道某些这样的工具吗?
– lllllllllllll
2014年1月21日在18:03
嗨,jvoisin,我终于找到了怎么做,我写下来了。
– lllllllllllll
2014年1月21日在18:34