--- title: Reverse engineering tags: REV --- [TOC] # Introduction > "Le reverse c'est comme la cuisine" # Rappel ASM **Pour aller plus loin:** le manuel intel (mdr) ## Le langage assembleur (asm) on ne fera que de la syntaxe intel operateur op1, op2 Operande de droite vers operande de gauche pour l'assignement des valeurs ## Les registres généraux liste: eax (| ax (| ah al)) ebx ecx edx esi edi esp rsp ## Les registres de segment un segment = un chose qui decrit un esp mem le code seg va etre utilise pour pouvoir se placer recup le code ? un registre 16 bits qui pointe vers ne table de descripteur et a partir de la on peut recup les info sur notre segment Inclut : Une base d'addr + une limite + permitions Par defaut: - stack segment - code segment - data segment ## Le registre de flags (EFLAGS) non modifiable directement il va changer au fur et a mesure des instr qu'on utilise dans ce registre on a les indicateurs d'etats, de sys, de controle - flags d'etats - CF - PF - flags de controle - flags systeme: pas a pas ## Les autres registres registre de controle (CR0 - CR4) regisytre de gestion mem (GDTR/LDTR): pour recup info sur le seg registre d'interruption registre de debugage: debug # Les principales instruction assembleur go check le man pour ca controle de flux : vont regarder les flags pour savoir s'ils peuvent sauter JMP entree/sortie IN OUT # L'allocation memoire la pile: de bas en haut (mais addr hautes vers addr basses) ESP => stack pointeur, pointe vers fin de pile EBP => pointe vers debut de frame ## Cadre de la pile lorsqu'on fait une fonc en asm ce qui est imp: - debut (prologue): sauvegarder - push ebp : save ebp - mov ebp, esp: set stack frame pointer - sub esp, localbytes: alocated space for locals - push "register": - fin (epilogue) - pop registers : restore registers - mov esp, ebp - pop ebp - ret ## Les convention d'appel les conventions d'appel methode qui assure lors d'un appel de fonc la coherence entre ce qui est realiser par la fonction appelante - cdecl: la pile est nettoyée par l’appelant - stdcall: on passe les arg sur la stack et cest la fonction appeller qui nettoie sauf que la cest moins qui retourne 8 - fastcall: c'est comme stdcall sauf qu'on va passer une partir des arg par les registres - thiscall: l’appelé nettoie la pile