2016-07-21 3 views
0

Ich bin ein Video ansehen, die erklären, wie eine Herausforderung an root-me.orgWas ist der Zweck von "toggle_flag" in GDB PEDA Befehl?

https://asciinema.org/a/22558

der Befehl er ist

toggle_flag 'S'

verwendet lösen

Ich google es, um zu wissen, was der Zweck des Befehls toggle_flag war, aber fand nichts. Also habe ich heruntergeladen GDB PEDA zu überprüfen, ob die einige nützliche Informationen war mit dem Befehl

Hilfe alle

die alle Befehl in GDB PEDA zur Liste ist wohl ... Aber das finden nicht nützlich ..

Also kann mir jemand erklären was "toggle_flag 'S'" heißt? Hier

Dank

Antwort

0

ist der Unterricht nach Pause auf dem toggle_flag 'S' ausgeführt wird:

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> 

Sie können hier die Prüfung auf das Vorhandensein eines Debuggers mit Hilfe von ptrace Funktion sehen. In C wird es so aussehen werden:

if (ptrace(PTRACE_TRACEME, 0, 1, 0) == -1) { 
    // Under debugger 
} 

Nach ptrace Anruf bei 0x8048410 ihr Rückgabewert in eax und Befehl gespeichert ist test eax, eax Sets Zeichen Flag (SF), wenn EAX negativ ist (das heißt, wenn Debugger vorhanden ist). Wir wollen nicht, dass das Programm erkennt, dass es sich unter dem Debugger befindet, also schalten wir mit dem Befehl toggle_flag 'S' SF um, d.h. setzen es auf 0.