gpt4 book ai didi

vim - diff - 在十六进制转储中查找两个值之间的特定变化

转载 作者:行者123 更新时间:2023-12-04 22:47:55 28 4
gpt4 key购买 nike

我正在分析来自我的一个基本命令行程序的二进制数据转储的十六进制数据。我基本上是将结构(实际上是一个大型结构数组)的确切内容转储到文本文件中。

然后我创建第二个二进制转储,并使用 vim 比较 xxd 中的两个文件以创建原始数据的二进制到文本表示。

这两个文件的字节大小完全相同,我试图以一种有意义的方式比较这两个文件。由于其他部分包含散列、基于我更改的值的函数等,即使在我转储文件之前对数据进行很小的更改也会导致文件的其他部分发生很大变化。

是否可以告诉 diffvimdiff 说,比较两个文件,并只显示文件中原始文件(即:文件 1)的值设置为 1 的部分,以及在第二个文件中的值被设置为 32

谢谢!

最佳答案

我用:

diff <(xxd file1.bin) <(xxd file2.bin)

这使用 process substitution 来比较两个 xxd 进程的输出。请注意,这仍会显示行差异,因此如果一行中的任何字节不同,它将被列出。这提供了一个很好的 hexdump 外观比较。

然而,用于此的经典工具是 cmp

所以,这可以像这样处理:
cmp -l file1.raw file2.raw | grep -in "oldValue" | grep -in "newValue"

这将准确列出您需要的内容,并打印出以下字段:
OFFSET  VALUE_IN_FILE_1 VALUE_IN_FILE_2

关于vim - diff - 在十六进制转储中查找两个值之间的特定变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16380090/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com