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


  • ANNUAIRE
  • [FR] InfoMirmo
    Apprentissage de l'informatique par l'intermédiaire de challenges de sécurité. Venez app...
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Hack this site
    Basic: 11, Realistic: 17, Application: 18, Programming: 12, Extbasic: 14, Javascript: 7, Stego: 17
    Challenges
    [EN] wechall
    Pour les gens n'étant pas familiers avec les sites de challenges, un site de challenges est un site propos...
    Hacking
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges

  • 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
Résolution Synok's CrackMe 2 in 1
17-10-2013, 12h18
Message : #1
MLT Hors ligne
MauriceLeTendu
*



Messages : 40
Sujets : 10
Points: 26
Inscription : Dec 2012
Résolution Synok's CrackMe 2 in 1
Cette résolution est assez facile. En terme de difficulté, elle peut être placée entre les tutoriels de ArK et mes 2 précédentes résolution.


La différence majeure avec les 2 résolutions précédentes, c'est que celui-ci est codé en C++ et le password est donné dans un fichier.

Caractéristiques du crackme:

Lien du crackme: http://crackmes.de/users/synok/crackme_2_in_1/
Difficulty: 2 - Needs a little brain (or luck)
Platform: Windows
Language: C/C++

Résolution


Nous exécutons le programme, nous avons le message suivant:
Code :
License function not patched

Donc nous en déduisons qu'une fonction doit être modifiée. Tongue

Nous ouvrons ollyDBG, et nous faisons clic droit > Search for > All referenced text strings.
Ensuite clic droit sur ASCII "License function not patched"

Nous arrivons ici:
[Image: synok_1.png]

Après analyse, nous voyons le jnz en 001B10DA, il suffit de le changer en JE ou JMP pour patcher la fonction.

Pour ma part j'ai enregistré la modification pour simplifier l'analyse. Wink

Nous exécutons le programme avec la modification, il nous demande un login, ensuite il nous met (pour le name "maurice"):
Code :
1217117664License invalid!

Curieusement, il nous indique un numéro qui est la licence valide (Erreur de codage Huh )

Maintenant tout ce passe ici :
[Image: Synok_2.png]

D'abord, une boucle est présente, elle ne sert pas à grand chose, juste elle prend la longueur du pseudo est la multiplie par 0x29a. Cool

Code :
001B11AB  |. 69F6 9A020000  IMUL ESI,ESI,29A                         ;  on multiplie la valeur esi par 29a (qui est la lg multiplié par 29a)
001B11B1  |. 8D8D C0FEFFFF  LEA ECX,DWORD PTR SS:[EBP-140]
001B11B7  |. E8 34010000    CALL CrackMe2.001B12F0
001B11BC  |. 0FAFF0         IMUL ESI,EAX                             ;  esi multiplié par l du pseudo dans esi
001B11BF  |. 6BF6 1C        IMUL ESI,ESI,1C                          ;  esi multiplié par 1c
001B11C2  |. D1E6           SHL ESI,1                                ;  esi << 1


Avec la ligne IMUL ESI,ESI,29A, on multiplie la longueur du pseudo par 0x29a qui a dejà auparavent été multiplié par 0x29a.
Pour résumé: longueur du pseudo * 0x29a * 0x29a.

Ensuite on multiplié la valeur acquise par la longueur du pseudo (IMUL ESI,EAX). Puis on multiplie le tout par 0x1C (IMUL ESI,ESI,1C).

Pour finir on décale de un bit vers la gauche (SHL ESI,1).

Et voilà, la valeur décimale de ce résultat est la licence valide. Elle doit être mis dans le fichier licence.dat sous forme décimale.

Voici le keygen:

Code PHP :
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    
unsigned char login[20] ;
    
int lg_login licence;

    
printf("Name : ") ;
    
scanf("%s"login);
lg_login strlen(login);


licence lg_login 0x29a ;
licence licence 0x29a ;
licence lg_login licence ;
licence licence 0x1c ;
licence licence << ;
printf("La licence est : %d" ,licence);


+1 (0) -1 (0) Répondre


Messages dans ce sujet
Résolution Synok's CrackMe 2 in 1 - par MLT - 17-10-2013, 12h18

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  Résolution LaFarges crackme #2 MLT 0 102 28-09-2013, 14h23
Dernier message: MLT
  Résolution greedy_fly keygenme_v1.6 MLT 0 121 29-08-2013, 22h14
Dernier message: MLT

Atteindre :


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