节区
节的概念与从二进制文件中提取的信息有关。我们可以使用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中的iS
和om
命令已足够处理这些东西。
固件、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
最后更新于
这有帮助吗?