所有内容均来自:https://xz.aliyun.com/t/7265#toc-6

radare2工程是由于一系列的组件构成的,这些组件可以在radare2界面或者单独被使用-比如:rabin2,rahash2,radiff2,rafind2,ragg2,rarun2,rax2,radare2。

相当于radare2 是手机,rabin2,rahash2,radiff2,rafind2,ragg2,rarun2,rax2,radare2是手机里面的程序。

可以用-h?来获取到信息。

rabin2

Rabin类似于阿拉伯语中的兔子,radare用这个可爱的名字掩盖了rabin是一个强大的二进制处理工具的事实。它可以获取有关导入,节,标头和其他数据的信息。 Rabin2可以用其他工具接受的格式来显示这些信息,包括radare2本身。Rabin2可以解析许多文件格式:Java CLASS,ELF,PE,Mach-O或插件支持的任何文件格式,并且能够获取符号导入/导出,库依赖,数据段字符串,外部参照,入口点地址,段,架构等

-h 来获取更多的信息

image-20230926232140261

-I

打印出二进制文件的系统属性,语言,字节序,框架,使用了啥加固技术…

1
rabin2 -I megabeets_0x1
image-20230517172549936

rasm2

rasm2是一个内置的汇编/反汇编器。rasm最初的设计目的是为二进制打补丁,主要的功能是获取指令对应的字节码。

-h 来获取更多的信息

image-20230926232935129

rahash2

支持多种哈希算法(包括但不限于MD4、 MD5、 CRC16、CRC32、 SHA1、SHA256)的哈希值计算工具。

例子:

image-20230926233411432

你可能对他心存疑惑:

image-20230926233434329

radiff2

比较二进制文件之间的不同。

rafind2

用于在文件中查找指定的内容

-h获取更多信息

image-20230926233757858

rax2

-h

image-20230926234052506

使用案例:

image-20230926234111608

radare2

综合了所有的r2

启动文件:r2 filename

进去会自动的停在程序的入口点,当然我们也可以用ie命令打印二进制文件入口点。

image-20230926234532509

i/a/f/s 系列命令

  • i系类命令用于获取信息。可以用i?查看

image-20230926235022513

  • a系类命令用于分析当前程序【r2不会自动分析】可用a?来查看

image-20230926235151970

image-20230926235237737

  • f:命令与flagspace相关。当radare2分析完后,会建立诸多offset-flag

image-20230926235402896

可使用fs命令查看flagspaces

image-20230926235457806

fs flagspace_name可以选中flagspace。在选中后f命令会显示flagspace内的flag:

image-20230926235725261

  • s系列命令用于快速定位s?

image-20230926235812000

strings

  • 查看字符串

使用iz/izz(区别可用iz?

image-20230927000000891

  • 查找字符串

1.s addr或者其他命令定位到指定位置

2.s/ DATA向下查找DATA第一次出现的位置,并且定位到此

3.ps显示字符串

image-20230927000301558

Refs/Xrefs

ax系列命令用于查看数据/代码段相互调用关系ax?

image-20230927000439310

axt用来data/code段里面寻找某个地址相关的引用。

@@系列

  • ‘axt’ 命令用来在 data/code段里找寻某个地址相关的引用(更多的操作,请看 ‘ax?’).

  • ‘@@’就像一个迭代器,用来在地址空间里不断地匹配后面一系列相关的命令(更多操作,请看 ‘@@?’)

  • ‘str.*’ 是一个通配符,用来标记所有以 ‘str.’开头的信息,不光会列出字符串标志,同时也包括函数名,找到它们到底在哪里以及何处被调用。

Function

  • 查看函数afl

查看所有函数使用afl系列命令。可通过afl?查阅,这里不一一列举,以下常用:

  1. afl:查看函数列表
  2. afl.:查看当前所处位置的函数
  3. aflt:以表格形式列出函数
  4. afls:以地址或名字或大小给函数列表排序(但不输出)

image-20230927001053405

  • 汇编某一函数

pd系列命令功能是反汇编并显示pd?

可以指自行指定字节(len可正亦可负)反汇编并显示,亦能够根据分析反汇编某一具体函数并显示。示例如下:

  1. aaa分析程序并自动命名函数
  2. afl查看函数列表
  3. s Function_Name定位到Function_Name函数的起始位置(Function_Name通过上一步骤得知)
  4. pdf反汇编该函数并显示结果(步骤3,4可以整合为一条命令pdf @Function_Name,因为@ 0等同于s 0)

image-20230927001503051

  • 反汇编某一个函数

pdc :类似IDA中的F5

image-20230927001550375

动态

  • Debugger

打开时使用-d参数进入Debugger模式,常用命令:

  • db flag/address/function name: 设置断点
  • db - flag/address/function name: 删除断点
  • db: 列出所有断点
  • dc:运行程序
  • dcu address:运行程序直到某一处为止
  • dr: 显示寄存器状态
  • ds: 单步步进(等同于OD中F7)
  • dso: 单步步过(等同于OD中F8)
  • dm: 显示内存
  • ood:重新以Debugger模式打开程序(类似OD中Ctrl+F2,但该命令只打开不运行)
  • ood arg1 arg2: 带参数重新打开