Radare2 支持w
写入字符串的 a。
w foobar write string 'foobar'
然而,它似乎对我不起作用,
$ touch foo
$ radare2 ./foo
w foobar
该文件foo
保持为空。我应该冲洗还是保存?
Radare2 支持w
写入字符串的 a。
w foobar write string 'foobar'
然而,它似乎对我不起作用,
$ touch foo
$ radare2 ./foo
w foobar
该文件foo
保持为空。我应该冲洗还是保存?
radare2
read-only mode
默认情况下打开一个文件。(r2 -h
有关更多信息,请参阅手册。)write mode
( r2 -w file
) 中启动radare2 。read-only session
已经在 a 时,oo+
将在模式下重新打开文件write
。cache mode
(e io.cache=true
)模仿写访问,但变化radare2实际上并没有写入磁盘。foo
在write mode
以下位置打开文件:
$ r2 -w foo
px 32
):
[0x00000000]> px 32
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 ffff ffff ffff ffff ffff ffff ffff ffff ................
0x00000010 ffff ffff ffff ffff ffff ffff ffff ffff ................
注意:前 32 个字节(以及文件的其余部分)为空。
让我们写下“Hello World!” 进入文件:
[0x00000000]> w Hello World!
并再次打印 32 个字节:
[0x00000000]> px 32
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 4865 6c6c 6f20 576f 726c 6421 ffff ffff Hello World!....
0x00000010 ffff ffff ffff ffff ffff ffff ffff ffff ................
伟大的!现在我们可以看到“Hello World!” 被写入文件。
cat
文件以查看内容:
[0x00000000]> q
$ cat foo
Hello World!
foo
以写模式打开文件:
$ r2 foo
[0x00000000]> px 32
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 4865 6c6c 6f20 576f 726c 6421 ffff ffff Hello World!....
0x00000010 ffff ffff ffff ffff ffff ffff ffff ffff ................
[0x00000000]> e io.cache=true
[0x00000000]> w Goodbyte World! :)
write mode
:
[0x00000000]> px 32
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 476f 6f64 6279 7465 2057 6f72 6c64 2120 Goodbyte World!
0x00000010 3a29 ffff ffff ffff ffff ffff ffff ffff :)..............
[0x00000000]> q
$ cat foo
Hello World!
注意:文件没有改变!这就是 的效果cache mode
。只是为了更新@Megabeets 的答案。
当您从一个空文件(由 创建touch
)开始时,w
默认情况下该命令将不起作用,即使r2
将以write
模式启动。在这种情况下,缺失的信息是映射
[0x00000000]> om
[0x00000000]
返回空结果。除了列出,该om
命令还可用于创建映射:
Usage: om[-] [arg] # map opened files
| om list all defined IO maps
...
| om fd vaddr [size] [paddr] [rwx] [name] create new io map
...
为了进行映射,需要指定(例如)以下命令
[0x00000000]> om 3 0x0 12
[0x00000000]> om
1 fd: 3 +0x00000000 0x00000000 - 0x0000000b rwx
这将为文件描述 3 创建一个从地址 0x0 开始的 12 字节大小的映射。
之后w
将工作:
[0x00000000]> w Hello world!
[0x00000000]> px 32
- offset - 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
0x00000000 4865 6c6c 6f20 776f 726c 6421 ffff ffff Hello world!....
0x00000010 ffff ffff ffff ffff ffff ffff ffff ffff ................
[0x00000000]>
要允许写入可达64 byte
开始offset 0x00000000
,在radare2图的变化来file descriptor 3
(在radare2打开的文件)。
[0x00000000]> om 3 0x0 64
[0x00000000]> om
1 fd: 3 +0x00000000 0x00000000 - 0x0000000b rwx
空文件(由 创建touch
)没有输入/输出映射(即使使用 in 打开write mode
)。要确认没有映射区域,您可以使用radare2-command 列出所有定义的IO 映射om
。)
要使用om
参数创建 i/o 映射使用:
om fd vaddr [size] [paddr] [rwx] [name] 创建新的 io 映射
radare2 -w test_file -- 已经执行的不能不执行 [0x00000000]> w 这不会被写入任何地方,因为不存在映射。 [0x00000000]> om [0x00000000]> om 3 0 64 [0x00000000]> om 1 fd: 3 +0x00000000 0x00000000 - 0x0000003f rwx [0x00000000]> w 你好世界! [0x00000000]> V