在另一个二进制文件中查找二进制文件
Find binary in another binary
我有两个二进制文件(dd 图像)一个很大(大约 1 GB)和一个很小(几 MB)。我想获得偏移量,在那里我可以找到大的里面的小的。我玩过 grep -a -x、xdd 和 od,但到目前为止运气不好。
如果您不需要它作为脚本函数,而只是为了处理一次性事件,您可以试试这个:
mindaugasb@bash:~/workspace $ touch file.txt
mindaugasb@bash:~/workspace $ echo "0020 0000 0000 0000 0000 0000 0000" > file.txt
mindaugasb@bash:~/workspace $ hexdump /bin/ls | grep -f file.txt
001a7a0 0020 0000 0000 0000 0000 0000 0000 0000
001aaf0 0020 0000 0000 0000 0000 0000 0000 0000
001ad30 0020 0000 0000 0000 0000 0000 0000 0000
001ad70 0020 0000 0000 0000 0000 0000 0000 0000
传递给 grep 的文件应该包含较小文件的第一行。如果没有重复,那你就走运了。
hexdump 输出的第一列是偏移量。
如果你想要较小文件的 hexdump 输出 - 你应该打赌它 w/o 字节偏移量,因为这样 grep 将永远不会匹配,因为字节偏移量是特定于每个文件的 - 你需要禁用字节偏移量,像这样:
mindaugasb@bash:~/workspace $ hexdump -e '16/1 "%02x " "\n"' /bin/ls | head -n1
7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
我有两个二进制文件(dd 图像)一个很大(大约 1 GB)和一个很小(几 MB)。我想获得偏移量,在那里我可以找到大的里面的小的。我玩过 grep -a -x、xdd 和 od,但到目前为止运气不好。
如果您不需要它作为脚本函数,而只是为了处理一次性事件,您可以试试这个:
mindaugasb@bash:~/workspace $ touch file.txt
mindaugasb@bash:~/workspace $ echo "0020 0000 0000 0000 0000 0000 0000" > file.txt
mindaugasb@bash:~/workspace $ hexdump /bin/ls | grep -f file.txt
001a7a0 0020 0000 0000 0000 0000 0000 0000 0000
001aaf0 0020 0000 0000 0000 0000 0000 0000 0000
001ad30 0020 0000 0000 0000 0000 0000 0000 0000
001ad70 0020 0000 0000 0000 0000 0000 0000 0000
传递给 grep 的文件应该包含较小文件的第一行。如果没有重复,那你就走运了。
hexdump 输出的第一列是偏移量。
如果你想要较小文件的 hexdump 输出 - 你应该打赌它 w/o 字节偏移量,因为这样 grep 将永远不会匹配,因为字节偏移量是特定于每个文件的 - 你需要禁用字节偏移量,像这样:
mindaugasb@bash:~/workspace $ hexdump -e '16/1 "%02x " "\n"' /bin/ls | head -n1
7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00