使用radare2 的第一件事是确保您运行的是最新的git 版本。
要获得有关radare2 中命令的帮助,您可以使用该?字符。有关配置变量的帮助,您可以使用e??(因为e?会帮助您了解如何使用它们,而不是列出它们)。由于有很多变量,您可以使用内部 grep 命令过滤它们:~。
[0x00000000]> e??dbg
          dbg.args:设置要调试的程序的args
       dbg.backend:选择调试器后端
           dbg.bep:中断入口点(加载器、入口、构造函数、主)
      dbg.bpinmaps:强制断点位于有效地图内
        dbg.bpsize:软件断点的大小
        dbg.btalgo:选择回溯算法
       dbg.btdepth:回溯深度
         dbg.clone:如果创建新线程则停止执行
         dbg.execs:如果创建新线程则停止执行
        dbg.follow:当 pc > core->offset + dbg.follow 时跟随程序计数器
         dbg.forks:如果 fork() 完成则停止执行(参见 dbg.threads)
          dbg.libs:如果在加载匹配的 libname 时设置停止
       dbg.profile: RRunProfile 文件的路径
 dbg.shallow_trace:跟踪时,避免跟随指定范围之外的调用
          dbg.slow:以缓慢但详细的模式在可视模式下显示堆栈和注册表
        dbg.status: 将 cmd.prompt 设置为 '.dr*' 或 '.dr*;drd;sr PC;pi 1;s-'
        dbg.swstep:强制使用软件步骤(代码分析+断点)
       dbg.threads:在调试器中断时停止所有线程(参见 dbg.forks)
         dbg.trace:跟踪程序执行(见asm.trace)
     dbg.trace.tag:跟踪标签
        dbg.unlibs:如果在卸载匹配的 libname 时设置停止
[0x00000000]>
您也可以使用 use e dbg.<tab>,因为有自动完成功能。
显然,您要查找的变量是dbg.fork,将其设置为 true:这将在遇到fork(). 您可以使用d-command更改 pid :
[0x00000000]> d?~进程
| dH [handler] 将过程移植到新的处理者
| 执行打开过程(重新加载,'oo' 的别名)
| dp[?] 列表,附加到进程或线程 id
| dx[?] 在目标进程上注入和运行代码(参见 gs)
[0x00000000]> dp?
|用法:dp #处理命令
| dp 列出当前的 pid 和孩子的
| dp 列出pid的孩子
| dp* 列出所有可附加的 pid
| dp=选择pid
| dp- 分离选择 pid
| dpa 附加并选择pid
| dpe 显示可执行文件的路径
| dpf 像文件 fd 一样附加到 pid // HACK
| dpk 发送信号给进程
| dpn 创建新进程(fork)
| dpnt 创建新线程(克隆)
| dpt 列出当前pid的线程
| dpt 列出进程的线程
| dpt= 附加到线程
[0x00000000]