• STATISTIQUES
  • Il y a eu un total de 3 membres et 330 visiteurs sur le site dans les dernières 24h pour un total de 333 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 1 821
    Discussions: 3 547
    Messages: 32 709
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] This is legal
    Basic: 10, Realistic: 5, Programming: 1, Bonus: 11, SQL: 2, Encryption: 6, Application: 4, User Contributed: 3
    Challenges
    [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [EN] Gekko
    Site de challenge présenter sous la forme d'une quête. Vous êtes un agent secret qui répond sous le nom...
    Challenges
    [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accéd...
    Challenges
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [FR] PHP Débutant
    Apprendre le PHP par l'exemple, facilement et simplement. Réservé d'abord aux débutants....
    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!




Keygening FooMe 1 With Xylitol

Outils Nécessaires :
  • Veuillez vous enregistrer pour visualiser l'ensemble du forum en cliquant ici.
  • Le KeygenMe (en attach)
    • Code :
      Scanning -> C:Documents and SettingsXylitolBureaufoome {part I}.exe
      File Type : Exe, Size : 11264 (02C00h) Byte(s)
      [!] File appears to have no protection or is using an unknown protection

      On peut remarquer ici que le KeygenMe ne possède aucune protection Anti-Reversing particulière, ce qui va nous faire gagner un peu de temps au final.

      Aperçu du KeygenMe :
      [Image: VR0iD.png]

      [+] Charger le KeygenMe dans OllyDbg.
      [+] Click Droit >> Search For >> All Referenced Text String

      Code :
      004012A3   SUB ESP,8                                 (Initial CPU selection)
      00401324   MOV DWORD PTR SS:[EBP-168],foome_{p.0040  ASCII "OLLYDBG.EXE"
      0040132E   MOV DWORD PTR SS:[EBP-164],foome_{p.0040  ASCII "idag.exe"
      00401338   MOV DWORD PTR SS:[EBP-160],foome_{p.0040  ASCII "windbg.exe"
      00401403   MOV DWORD PTR SS:[ESP+8],foome_{p.004030  ASCII "U sUck"
      0040140B   MOV DWORD PTR SS:[ESP+4],foome_{p.004030  ASCII "t4pZ"
      00401431   MOV DWORD PTR SS:[ESP],foome_{p.0040302C  ASCII "                 [ foome part I by fyuw]",LF,LF,"Login : "
      00401447   MOV DWORD PTR SS:[ESP],foome_{p.0040305F  ASCII "%s"
      00401466   MOV DWORD PTR SS:[ESP],foome_{p.00403062  ASCII "Need more 5 char..."
      00401494   MOV DWORD PTR SS:[ESP],foome_{p.00403076  ASCII "Need less 10 char..."
      004014AF   MOV DWORD PTR SS:[ESP],foome_{p.0040308B  ASCII "pwd : "
      004014C5   MOV DWORD PTR SS:[ESP],foome_{p.00403092  ASCII "%d"
      0040151A   MOV DWORD PTR SS:[ESP+8],foome_{p.004030  ASCII "Iz N0t da g00d password"
      00401522   MOV DWORD PTR SS:[ESP+4],foome_{p.004030  ASCII "t4pZ"
      0040154D   MOV DWORD PTR SS:[ESP+8],foome_{p.004030  ASCII "U win.. make a keygen"
      00401555   MOV DWORD PTR SS:[ESP+4],foome_{p.004030  ASCII "t4pZ"
      004017DB   MOV DWORD PTR SS:[ESP],foome_{p.004030E8  ASCII "w32_sharedptr->size == sizeof(W32_EH_SHARED)"
      004017E7   MOV EAX,foome_{p.00403118                 ASCII "../../gcc-3.4.5/gcc/config/i386/w32-shared-ptr.c"
      004017F9   MOV DWORD PTR SS:[ESP],foome_{p.0040314C  ASCII "GetAtomNameA (atom, s, sizeof(s)) != 0"
      00401805   MOV ECX,foome_{p.00403118                 ASCII "../../gcc-3.4.5/gcc/config/i386/w32-shared-ptr.c"

      olol anti-débogues:
      OLLYDBG.EXE
      idag.exe
      windbg.exe

      Le programme check dans la liste des processus pour voir si un des trois l'a chargé dedans, si il le found, le foome s'auto kill, posez des nops ou renommez le fichier OLLYDBG.EXE par autre chose et voilà,
      now: retournez dans les string data références
      "Need more 5 char..."
      "Need less 10 char..."
      Votre nom doit faire plus de 5 caractères et moins de 10 caractères pour continuer la routine
      Double clickez sur "pwd : " dans les SDR

      Placez un point d'arrêt sur
      004014B6 |. E8 49060000 CALL<JMP.&msvcrt.printf>
      Lancez le fooMe (touche F9 par défaut), entrez votre nom et validez
      olol on break c'est beaucoup trop tôt !
      olol (bis) le registre: ECX 0022FE00 ASCII "xylitol"
      bon supprimez le point d'arrêt, olol, la fonction scanf, olol le bordel en dessous se pourrait t'il que...
      Placez un point d'arrêt en 0040150A, tapez un faux serial, regardez dans le dump


      EAX=00002A75 <- 10869
      Stack SS:[0022FE2C]=00007A69 <- 31337


      le bon serial et stoké dans EAX...
      kewl on a serialfishé le truc mais c'était pas le but quoi
      enfin bon now on avance on connait désormais la routine


      Routine de Génération de Serial Valide:
      Code :
      004014D1  |. 0FBE9D 8AFEFFFF  MOVSX EBX,BYTE PTR SS:[EBP-176]  ; |||
      004014D8  |. 8D85 88FEFFFF    LEA EAX,DWORD PTR SS:[EBP-178]   ; |||
      004014DE  |. 890424           MOV DWORD PTR SS:[ESP],EAX       ; |||
      004014E1  |. E8 0E060000      CALL Strlen                      ; ||strlen
      004014E6  |. 89C2             MOV EDX,EAX                      ; ||
      004014E8  |. 89D0             MOV EAX,EDX                      ; ||
      004014EA  |. 01C0             ADD EAX,EAX                      ; ||
      004014EC  |. 01D0             ADD EAX,EDX                      ; ||
      004014EE  |. C1E0 09          SHL EAX,9                        ; ||
      004014F1  |. 01D0             ADD EAX,EDX                      ; ||
      004014F3  |. 01C3             ADD EBX,EAX                      ; ||
      004014F5  |. 8B85 A0FEFFFF    MOV EAX,DWORD PTR SS:[EBP-160]   ; ||
      004014FB  |. 890424           MOV DWORD PTR SS:[ESP],EAX       ; ||
      004014FE  |. E8 F1050000      CALL Strlen                      ; |strlen
      00401503  |. 29C3             SUB EBX,EAX                      ; |
      00401505  |. 89D8             MOV EAX,EBX                      ; |
      00401507  |. 83C0 0C          ADD EAX,0C                       ; |
      0040150A  |. 3985 B4FEFFFF    CMP DWORD PTR SS:[EBP-14C],EAX   ; | Comparaison Final entre le Serial Entré & le Sérial Réel


      Détails:
      Code :
      004014D1  |. 0FBE9D 8AFEFFFF  MOVSX EBX,BYTE PTR SS:[EBP-176]  |Prend la 3e Lettre du Login que l'on place dans EBX
      004014D8  |. 8D85 88FEFFFF    LEA EAX,DWORD PTR SS:[EBP-178]   |Insère le Contenue du Login dans EAX
      004014DE  |. 890424           MOV DWORD PTR SS:[ESP],EAX       |Aucune utilité particluière pour la Génération du Serial
      004014E1  |. E8 0E060000      CALL strlens                     |Strlen() renvoi la Longueur du Login Entré (Xylitol : 7)
      004014E6  |. 89C2             MOV EDX,EAX                      |Déplace le contenue de EAX dans EDX
      004014E8  |. 89D0             MOV EAX,EDX                      |Déplace le contenue de EDX dans EAX
      004014EA  |. 01C0             ADD EAX,EAX                      |EAX = EAX * 2 (Xylitol : 7*2). Soit 7h + 7h = Eh
      004014EC  |. 01D0             ADD EAX,EDX                      |EAX = EAX + EDX (EDX = 7h)
      004014EE  |. C1E0 09          SHL EAX,9                        |Décalage dans EAX de 9 Rangs vers la Gauche
      004014F1  |. 01D0             ADD EAX,EDX                      |Additionne EDX à EAX
      004014F3  |. 01C3             ADD EBX,EAX                      |Additionne EAX à EBX
      004014F5  |. 8B85 A0FEFFFF    MOV EAX,DWORD PTR SS:[EBP-160]   |EAX = "windbg.exe"
      004014FB  |. 890424           MOV DWORD PTR SS:[ESP],EAX       |Aucune utilité dans l'algorithme, paramètre pour l'API Strlen
      004014FE  |. E8 F1050000      CALL                             |EAX = A (en hexa, 10 en decimale), EDX est écrasé, et  ECX = "windbg.exe"
      00401503  |. 29C3             SUB EBX,EAX                      |Soustrait EAX à EBX
      00401505  |. 89D8             MOV EAX,EBX                      |Déplace le contenue de EBX dans EAX
      00401507  |. 83C0 0C          ADD EAX,0C                       |Additionne 0C à EAX
      0040150A  |. 3985 B4FEFFFF    CMP DWORD PTR SS:[EBP-14C],EAX   |Compare le Vrai Serial au Sérial Entré par l'Utilisateur


      [+] Remarque : N'oubliez pas qu'en ASM, chaques Calculs effectués sont effectués en Héxadécimal !!

      À présent que l'on en sait un peu plus sur la Routine Principale du Keygen, nous allons pouvoir reprogrammer celle-ci et en faire un Keygen fonctionnel et Valide. Sophocle a programmé un Keygen en Python et 0vercl0k en C. Je ne souhaitais pas coder un Keygen en utilisant un langage qui avait déjà été usité, et par conséquent, j'ai opté pour l'ASM de Windows, à savoir MASM.

      Par soucis de clairvoyance, je ne vous insère ici que la fonction de génération du Serial Valide.


      Routine MASM:
      Code :
      MOV EDX,EAX
      MOV EAX,EDX
      ADD EAX,EAX
      ADD EAX,EDX
      SHL EAX,9
      ADD EAX,EDX
      ADD EBX,EAX
              
      PUSHAD            ;Sauvegarde tout les Registres
      MOV ECX, EDX      ;Insère la Longueur du Login dans ECX (Correction Trouvé lors du Debug)
      XOR EDX, EDX      ;Compteur pour la Longueur de la Chaine.
      LEA ESI, szName   ;On pointe la Chaine à Analyser.
      JMP Strlen    

      Char_Traite:
      MOV EBX, EAX      ;On met le caractère contenue dans AL dans BX
      JMP Continue      ;On continue sur la Routine du Keygen

      Strlen:
      CMP EDX,3         ;Compare si EDX vaut 3 (3e Char)
      JE Char_Traite    ;Si c'est le cas, on JMP sur la Fonction Char_Traite
      LODSB             ;Charge dans AL le caractère courant et pointe le suivant.
      OR EAX, EAX       ;On test si c'est la fin de la chaine.
      JZ Continue       ;Si c'est le cas, on sort de la routine.
      INC EDX           ;On rajoute un caractère de plus dans la chaine.
      JMP Strlen        ;Saute sur le caractère suivant de la chaine.

      Continue:
      POPAD             ;Restaure tout les Registres
      ADD EBX, ECX
      MOV EAX,0Ah
      SUB EBX,EAX
      MOV EAX,EBX
      ADD EAX,0Ch

      Au final, un algorithme respecté et fonctionnel, sur un Keygen assez rudimentaire, mais qui permet de bien s'initier au Reversing.

      et on va se quitter sur une petite screen réjouissante:
      [Image: 6jiTI.png]
29-09-2011, 23h17
Message : #1
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,717
Points: 156
Inscription : Jan 2012
Keygening FooMe 1 With Xylitol
Très bon tuto félicitation Xylitol ;-) Rep +20!

New Project News White Hat Hacker V2.3
Accueil | Challenges | Tutoriels | Téléchargements | Forum