我知道一些二进制差异工具,如 VBinDiff 等。
目前我有大量的二进制文件,大约 500 个。
所以我正在寻找一个二进制工具来定量评估二进制文件的差异..
比如评估二进制 10 和二进制 100 的差异是 56%。二进制 50 和二进制 200 的差异是 78%。
有没有这样的工具?
谢谢!
我知道一些二进制差异工具,如 VBinDiff 等。
目前我有大量的二进制文件,大约 500 个。
所以我正在寻找一个二进制工具来定量评估二进制文件的差异..
比如评估二进制 10 和二进制 100 的差异是 56%。二进制 50 和二进制 200 的差异是 78%。
有没有这样的工具?
谢谢!
这是我的解决方案。
我radiff2
用来找出二进制文件之间的所有差异。
radiff2 binary1 binary2
然后xxd
将二进制转换为十六进制
xxd -p final
之后,wc
找出一个二进制中的十六进制数
wc -c outputhex
wc -l newlineneedtodelete
现在我有两个二进制文件之间的差异以及每个二进制文件中的十六进制总数。一个简单的除法可以计算出我想要的差异百分比。
鉴于您希望将 ~500 个二进制文件相互比较,您真正想要的是VxClass。
不幸的是,Zynamics/Google 不再销售 VxClass。如果有人知道购买或下载它的方法,请随时在此处分享信息。
这可能有点超出正常逆向工程师的工具箱,但仍然有可能。Courgette是 Chromium 和 Chrome 背后更新机制的代号。引用:
Courgette 将程序转换为原始汇编语言,并在汇编级别进行比较:
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 架构的数量。你没有说明你的要求(除非它是用不可见的像素写的;))