我想使用radare2在二进制文件中找到符号的地址(例如strcpy)。我尝试使用f命令列出r2可以识别的所有标志,但是列表很大,以这种方式查找特定符号的地址并不方便。

如果有的话,什么是最好的方法。

#1 楼

f命令用于列出所选标志空间中的所有标志。默认情况下,所有可用的标志空间均已选中。为了选择'symbols'标志空间并仅列出其中的标志,请使用:

[0x004049a0]> fs symbols
[0x004049a0]> f
0x00402a00 261 main
0x004049a0 41 entry0
0x0061e600 8 obj.__bss_start
0x00413c8c 9 sym._fini
0x0061e610 4 obj.optind
0x004022b8 26 sym._init
0x0061e620 8 obj.program_invocation_name
0x0061e600 0 loc.__bss_start
0x0061f368 0 loc._end
0x00412960 38 sym._obstack_memory_used
0x0061e5f8 8 obj.obstack_alloc_failed_handler
0x00412780 17 sym._obstack_begin
0x0061e640 8 obj.stderr
0x004128f0 106 sym._obstack_free
0x004128c0 48 sym._obstack_allocated_p
0x0061e618 8 obj.optarg
0x004127a0 21 sym._obstack_begin_1
0x004127c0 245 sym._obstack_newchunk
0x0061e608 8 obj.stdout


但是,我列出所有符号的首选方法是使用i命令,该命令实际上使用“ rabin2”(man rabin2)来检索有关二进制文件的信息。使用i?获得有关该命令的帮助。

为了列出所有符号,请运行is。 />
[0x004049a0]> is~strcpy
vaddr=0x004023c0 paddr=0x000023c0 ord=013 fwd=NONE sz=16 bind=GLOBAL type=FUNC name=imp.strcpy


如果只需要地址,请使用:

[0x004049a0]> is~strcpy[1]
0x004023c0


有关标志和标志空间的更多信息在这里找到
在此处可以找到有关符号的更多信息