我一直在努力让这个工作起来.有谁知道如何获取grep或类似的东西来检索文件中的十六进制字符串的偏移量?
我有一堆hexdumps我需要检查字符串,然后再次运行并检查值是否已更改.
我已经尝试过hexdump和dd,但问题是因为它是一个流,我丢失了文件的偏移量.
有人必须遇到这个问题和解决方法.我能做什么?
为了澄清,我有一系列来自GDB的转储内存区域.
我试图通过搜索存储号码的所有位置缩小数字,然后再次执行并检查新值是否存储在同一存储位置.
我无法做grep做任何事情,因为我正在寻找十六进制值,所以我一直尝试过(就像一个bazillion,大致)它不会给我正确的输出.
十六进制转储只是完整的二进制文件,paterns在浮动值范围内大到8个?字节?
模式并没有包裹我所知道的线条.我知道它改变了什么,我可以做同样的过程并比较列表以查看哪个匹配.十六进制转储通常最终(总共)100兆位.
Perl可能是一个选项,但在这一点上,我认为我对bash及其工具缺乏了解是罪魁祸首.
它有点难以解释我得到的输出,因为我真的没有得到任何输出..
我期待(并期待)一些事情:
<offset>:<searched value>
Run Code Online (Sandbox Code Playgroud)
这是我通常会得到的非常好的标准输出 grep -URbFo <searchterm> . > <output>
问题是,当我尝试搜索十六进制值时,我遇到的问题是如果只是不搜索十六进制值,所以如果我搜索00我应该得到一百万次点击,因为那总是空白空间,而是搜索00为文本,所以十六进制,3030.任何想法?
我可以强制它通过hexdump或链接的某些东西,但因为它的流不会给我它发现匹配的偏移量和文件名.
使用grep -b
选项似乎也不起作用,我确实尝试了所有看起来对我的情况有用的标志,但没有任何效果.
使用xxd -u /usr/bin/xxd
作为一个例子,我得到一个输出将是有益的,但我不能使用搜索..
0004760: 73CC 6446 161E 266A 3140 5E79 4D37 FDC6 s.dF..&j1@^yM7..
0004770: BF04 0E34 A44E 5BE7 229F 9EEF 5F4F DFFA ...4.N[."..._O..
0004780: FADE 0C01 0000 000C 0000 0000 0000 0000 ................
Run Code Online (Sandbox Code Playgroud)
不错的输出,就像我看到的那样,但在这种情况下它对我不起作用..
这是我发布以来我尝试过的一些事情:
xxd -u /usr/bin/xxd | grep 'DF'
00017b0: 4010 8D05 0DFF FF0A 0300 53E3 0610 A003 @.........S..... …
Run Code Online (Sandbox Code Playgroud)