我正在观看一个解释如何在root-me.org上解决挑战的视频
他使用的命令是
toggle_flag'S'
我谷歌知道命令toggle_flag的目的是什么,但没有找到任何东西。所以我下载了GDB PEDA以使用命令
检查是否有一些有用的信息帮助所有
这是假设列出GDB PEDA中可用的所有命令......但是没有找到任何有用的..
那么有人能解释一下“toggle_flag'S'”的含义吗?
由于
答案 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.