双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

如何用perl修改一个二进制文件

xuyunqq xuyunqq 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
[要求]
如何把二进制文件中A开始偏移0x10开始的四个字节修改为0x12345678

[文件A]
修改前:
0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

修改后:
0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0010 78 56 34 12 00 00 00 00 00 00 00 00 00 00 00 00


[已经做的工作]
#!/usr/bin/env perl

$OFFSET = 16; # offset in file, in bytes
$VALUE = 0x12345678;

open(FH, "+<A") || die "can't update somewhere: $!";
binmode(FH);

seek(FH, $OFFSET , 0);

print FH $VALUE; #要修改的也就是这个地方了

close FH;

输出:
0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0010 30 78 31 32 33 34 35 36 37 38 00 00 00 00 00 00

如果把那句print语句修改为print FH pack("H8",$VALUE);
那输出就变为:
0x0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0010 01 12 34 56 00 00 00 00 00 00 00 00 00 00 00 00

请问如何修改才能达到我的要求呢?谢谢了!


...全文
评论 5
收藏 已收藏
分享
返回顶部
xuyunqq
脚本语言 37,738 成员 34,208 内容