节区

节的概念与从二进制文件中提取的信息有关。我们可以使用i命令显示此信息。 显示有关节区的信息:

[0x00005310]> iS
[Sections]
00 0x00000000     0 0x00000000     0 ----
01 0x00000238    28 0x00000238    28 -r-- .interp
02 0x00000254    32 0x00000254    32 -r-- .note.ABI_tag
03 0x00000278   176 0x00000278   176 -r-- .gnu.hash
04 0x00000328  3000 0x00000328  3000 -r-- .dynsym
05 0x00000ee0  1412 0x00000ee0  1412 -r-- .dynstr
06 0x00001464   250 0x00001464   250 -r-- .gnu.version
07 0x00001560   112 0x00001560   112 -r-- .gnu.version_r
08 0x000015d0  4944 0x000015d0  4944 -r-- .rela.dyn
09 0x00002920  2448 0x00002920  2448 -r-- .rela.plt
10 0x000032b0    23 0x000032b0    23 -r-x .init
...

如您所知,二进制文件具有节区和映射,这些节区定义了文件的部分内容,可以在内存中映射(或不映射)这些节区。具体映射什么由段定义。

在condret完成IO的重构前,S命令管理的是我们现在成为映射的部分,而现在S已被废弃,因为r2中的iSom命令已足够处理这些东西。

固件、bootloader和二进制文件常将文件内不同的节区放在不同的内存地址上,radare2提供iS命令展示了这种行为。使用iS?可以获得帮助信息,可以通过iS列出其创建的所有节区(或者用iSj获取json格式的信息)。iS=将会以ascii字符画条柱的形式展示该结果。

可以像下面用om子命令创建新的映射:

om fd vaddr [size] [paddr] [rwx] [name]

例如:

[0x0040100]> om 4 0x00000100 0x00400000 0x0001ae08 rwx test

可以用om命令查看已映射的节区信息:

[0x00401000]> om
 6 fd: 4 +0x0001ae08 0x00000100 - 0x004000ff rwx test
 5 fd: 3 +0x00000000 0x00000000 - 0x0000055f r-- fmap.LOAD0
 4 fd: 3 +0x00001000 0x00001000 - 0x000011e4 r-x fmap.LOAD1
 3 fd: 3 +0x00002000 0x00002000 - 0x0000211f r-- fmap.LOAD2
 2 fd: 3 +0x00002de8 0x00003de8 - 0x0000402f r-- fmap.LOAD3
 1 fd: 4 +0x00000000 0x00004030 - 0x00004037 rw- mmap.LOAD3

使用om?获取所有可用的子命令,若要列出定义的所有映射,请使用om命令(或omj获取json格式, 以及om*获取r2命令格式),ascii风格的条柱输出依旧使用om=

om-mapid可以删除已映射的节区:

例如:

[0x00401000]> om-6

最后更新于

这有帮助吗?