• STATISTIQUES
  • Il y a eu un total de 0 membres et 27202 visiteurs sur le site dans les dernières 24h pour un total de 27 202 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] w3challs
    Ce site propose différents types de défis informatiques: piratage, craquage, cryptographie, stég...
    Hacking
    [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [FR] Developpez.net
    Un forum communautaire qui se veut pour les développeurs en générale. Avec presque 500 000 membr...
    Programmation
    [FR] Le top web
    Nous offrons une sélection la plus large possible de resources webmaster gratuites, hébergement gratuit...
    Webmaster
    [EN] Astalavista
    JavaScript: 1, Exploit: 2, Crypto: 34, CrackIt: 15, Stegano: 8, Programming: 12, Logic: 36, Special: 6, Science: 4, Info...
    Challenges
    [FR] Root-Me
    Notre équipe se base sur un constat : à l'heure actuelle ou l'information tend à devenir...
    Hacking
    [FR] Le site du zero
    Découvrez gratuitement la programmation (C, C++, PHP, MySQL, XHTML, CSS...), Linux, le Mapping, la modé...
    Programmation

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[ASM] Récupération registre EIP
13-01-2013, 19h57
Message : #1
Yttrium Hors ligne
Membre actif
*



Messages : 106
Sujets : 14
Points: 48
Inscription : Jul 2012
[ASM] Récupération registre EIP
Bonjour a tous !

Aujourd'hui, nous allons voir comment récupéré la valeur du registre EIP grâce a une procédure en Assembleur x86.
Cette dernière peux facilement être intégré à un code C grâce à la balise asm("");

Tout d'abord qu'est ce que le registre EIP.
Le registre EIP, est utilisé par le processeur pour connaitre l’adresse de la prochaine instruction à exécuter. Cependant, il ne peux pas être modifié avec la traditionnel instruction mov.
Vous le modifier sans le savoir lorsque vous faite un jump, car vous lui donner une valeur spécifique.
Mais malgré ça, il reste une solution qui permet de récupéré ça valeur, le pointeur de pile, ESP.

En faite, lorsque vous appelez une procédure avec l'instruction call, la variable EIP est stocké sur la pile avant d'être modifié. Et c'est la variable ESP qui contient l'adresse du haut de la pile, il nous suffira donc simplement de coder une fonction qui une fois appelé stock la variable pointé par ESP et la retourne ce qui nous donne :

Code :
eip_to_eax:
mov eax, [esp]
ret

Il vous suffira ensuite d'appeler la procédure eip comme ceci :


Code :
call eip_to_eax
BufferoverfloW

Всё минется, одна правда останется
+1 (4) -1 (0) Répondre
13-01-2013, 20h05
Message : #2
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,609
Sujets : 71
Points: 465
Inscription : Jan 2012
RE: [ASM] Récupération registre EIP
Sympa ton article Smile

Btw, on retrouve ce trick assez souvent (surtout dans les shellcodes ou payload injectés dans d'autres bins), pour récupérer des données hardcoded dans le shellcode relativement à où est placé le shellcode Wink.

Par exemple, le botnet andromeda utilise ce trick pour retrouver des données Wink
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (0) -1 (0) Répondre
15-01-2013, 03h12 (Modification du message : 15-01-2013, 03h20 par gruik.)
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [ASM] Récupération registre EIP
yep, c'est le trick bien connu du call/pop qu'on trouve aussi dans les shellcodes à l'ancienne Wink
à noter que ça fait typiquement office de signature pour la détection de shellcodes justement (cf libemu)

un autre trick existe aussi qui utilise les instructions du coprocesseur math x87 fldz et fstenv
Code ASM :

$ echo -ne "\xd9\xee\xd9\x74\xe4\xf4\x58" | ndisasm.exe -u -
00000000  D9EE              fldz
00000002  D974E4F4          fnstenv [esp-0xc]
00000006  58                pop eax
 


et il semblerait qu'il y ait au moins une autre methode via les seh sous windows
http://skypher.com/wiki/index.php/Hackin...code/GetPC
+1 (2) -1 (0) Répondre
15-01-2013, 19h34
Message : #4
Horgh Hors ligne
Membre actif
*



Messages : 197
Sujets : 4
Points: 91
Inscription : Mar 2012
RE: [ASM] Récupération registre EIP
Nice gruik, je connaissais pas ces quelques tricks tordus. thx pour la doc :]
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut