Linux 命令行查找和替换十六进制

Linux 命令行查找和替换十六进制

是否有命令行 Linux 工具可以查找并替换二进制文件中的十六进制数据?示例用法?

例如:'s/00FF00FFFF06500B49/11BB00BFFF06500B49/g'

答案1

Perl 脚本:

my $find_packed = pack "H*", '0100000000000000FF0A16731485400000000000FFA10201FF22FFFFFFFF0200';
my $repl_packed = pack "H*", '0100000000000000FF0A16731485400010FFC545FFA10201FF22FFFFFFFF0200';
my $file = do { local $/; <> };
$file =~ s/\Q$find_packed/$repl_packed/g;
print $file;

用法:

perl hexreplace.pl in_binary > out_binary

上面的未完善版本似乎对我有用,感谢#perlfreenode 上的伙计们 :-)

相关内容