Les événements du debugger
Nous allons revenir sur la fonction WaitForDebugEvent() qui nous retourne la structure DEBUG_EVENT.
Cette structure contient beaucoup d’information dont dwDebugEventCode qui va particulièrement nous intéresser, elle va nous indiquer quel type d’événement a eu lieu.
En regardant la valeur de dwDebugEventCode, nous pourrons ainsi déterminer l’événement.
Code d’événement |
Valeur du code |
Valeur de l’union u |
0x1 |
EXCEPTION_DEBUG_EVENT |
u.Exception |
0x2 |
CREATE_THREAD_DEBUG_EVENT |
u.CreateThread |
0x3 |
CREATE_PROCESS_DEBUG_EVENT |
u.CreateProcessInfo |
0x4 |
EXIT_THREAD_DEBUG_EVENT |
u.ExitThread |
0x5 |
EXIT_PROCESS_DEBUG_EVENT |
u.ExitProcess |
0x6 |
LOAD_DLL_DEBUG_EVENT |
u.LoadDll |
0x7 |
UNLOAD_DLL_DEBUG_EVENT |
u.UnloadDll |
0x8 |
OUTPUT_DEBUG_STRING_EVENT |
u.DebugString |
0x9 |
RIP_EVENT |
u.RipInfo |
Ajoutons donc maintenant quelques définitions à mon_debugger3.py qui devient donc mon_debugger_final.py
Nous utiliserons mon_debugger_final.py jusqu’à la fin de ce chapitre, des fonctions que nous verrons ultérieurement y ont déjà été placées.
mon_debugger_final.py
from ctypes import *
from mes_definitions_debugger_final import *
import sys
import time
kernel32 = windll.kernel32
class debugger():
def __init__(self):
self.h_process = None
...