sed 是个查找替换文本文件的工具,通常是以行为单位,关于它的用法网上有很多,但都是针对文本文件的。
sed以文本模式替换可执行文件(如exe和dll),会导致0x0D,0x0A(换行符)被意外破坏掉,程序文件被损坏。
所以需要以二进制方式查找和替换数据,仔细研究了一下,终于有了结果,做个笔记。
其实就是加上-b参数:
一、从文件中删除指定数据
sed -b -i '/\x00\x11\x22\x33/d' demo.exe
这个命令将demo.exe文件中的00,11,22,33序列全部删掉。
二、替换文件中的数据
sed -b -i 's/\x00\x11\x22\x33/\xAA\xBB\xCC\xDD/g' demo.exe
这个命令将替换demo.exe文件中的00,11,22,33序列为AA,BB,CC,DD
sed 是个查找替换文本文件的工具,通常是以行为单位,关于它的用法网上有很多,但都是针对文本文件的。sed以文本模式替换可执行文件(如exe和dll),会导致0x0D,0x0A(换行符)被意外破坏掉,程序文件被损坏。所以需要以二进制方式查找和替换数据,仔细研究了一下,终于有了结果,做个笔记。其实就是加上-b参数:一、从文件中删除指定数据sed -b -i '/\x00\...
昨天一个好朋友,找我帮忙:
说想定向的修改
二进制
文件
指定位置的数据,希望我能写个脚本,通过某个 csv
文件
里面的 定位数据,和对应值,以及数位长度进行修改。
要处理的数据
文件
:
替换
的数据:csv
文件
的数据:
问了好半天,他认真的告诉我:A.csv
文件
里面一行三个信息,第一列是DATA.BIN
文件
的某个要
替换
的数据的 偏移地址,第二列是对应地址要
替换
的值,第三列是要
替换
的长度,其中要
替换
的长度都可弄成1字节,到时候他写
sed
-bin:编译
sed
脚本
该项目允许将
sed
转换为C ,以便能够编译结果并生成与原始
sed
脚本具有完全相同行为的
二进制
文件
,例如echo foo |
sed
s/foo/bar/将被echo foo | ./
sed
-bin
替换
echo foo | ./
sed
-bin 。
克隆存储库并移至其目录内,您将需要常用的UNIX内核并构建utils(
sed
,libc,C编译器,shell,make)。
注意:该项目目前已在Fedora 32上与GNU libc(2.31),GNU
sed
(4.5)和GCC(10.1.1)一起进行了测试。在FreeBSD 12.1上进行了一些其他测试。
让我们举一个简单的例子:
sh$ echo foo |
sed
s/foo/bar/
假设您要编译s/foo/bar/ :
使用提供的shell脚本,这可以完成
sed
简介
sed
是linux中提供的一个外部
命令
,它是一个行(流)编辑器,非交互式的对
文件
内容进行增删改查的操作,使用者只能在
命令
行输入编辑
命令
、指定
文件
名,然后在屏幕上查看输出。它和文本编辑器有本质的区别。
文本编辑器: 编辑对象是
文件
行编辑器:编辑对象是
文件
中的行
也就是前者一次处理一个文本,而后者是一次处理一个文本中的一行。这个是我们应该弄清楚且必须牢记的,否者可能无法理解
sed
的运行原理和使用精髓。
sed
数据处理原理
sed
命令
sed
命令
sed
[option