GDB PEDA命令中“toggle_flag”的目的是什么?

时间:2016-07-21 13:15:13

标签: gdb

我正在观看一个解释如何在root-me.org上解决挑战的视频

https://asciinema.org/a/22558

他使用的命令是

  

toggle_flag'S'

我谷歌知道命令toggle_flag的目的是什么,但没有找到任何东西。所以我下载了GDB PEDA以使用命令

检查是否有一些有用的信息
  

帮助所有

这是假设列出GDB PEDA中可用的所有命令......但是没有找到任何有用的..

那么有人能解释一下“toggle_flag'S'”的含义吗?

由于

1 个答案:

答案 0 :(得分:0)

这是执行get_options()的休息后的指令:

toggle_flag 'S'

您可以在此处看到在 0x8048410 <main+32>: call 0x8058a70 <ptrace> 0x8048415 <main+37>: add esp,0x10 0x8048418 <main+40>: test eax,eax => 0x804841a <main+42>: jns 0x8048436 <main+70> 函数的帮助下检查是否存在调试器。在C中它看起来像那样:

ptrace

if (ptrace(PTRACE_TRACEME, 0, 1, 0) == -1) { // Under debugger } ptrace之后调用其返回值存储在0x8048410和。{ 如果eax为负(即,如果存在调试器),则命令eax设置符号标志(SF)。我们不希望程序检测到它在调试器下,所以使用命令test eax, eax我们切换SF,即将其设置为0.