Méthodes basiques anti-cracking

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

c'est ce f qui m'a gêné quand j'ai cherché de la doc sur ces instructions, à chaque fois il correspondait au f de float... en tout cas tes codes sont tres instructifs... maintenant j'essaye de comprendre le deuxième...

[edit]
si j'ai bien compris tu t'autorises à modifier le code et tu touches au xor eax, eax (eax = 0 ?) pour le modifier en RDTSC (donc les deux instructions font la même taille) à l'aide des variables var1 à 3 et les deux pointeurs qui pointent sur les eax.

:onfire: (j'ai pas trouvé mieux pour dire ke tu m'as grillé tous mes neuronnes lol)
dans la même optique ont peut crypter certains bouts de code ou fonctions, yzen pensent koi les crackers ?

Dri
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

C'est bien ça, j'écrase l'instruction XOR eax,eax par l'instruction RDTSC en plusieurs étapes ni vues ni connues que je t'embrouille :D
Les deux instructions ont la même taille.

On peut aussi en autorisant l'écriture sur tout l'exécutable, faire comme les fichiers ZIP, mais sans compression.
- Crypter une partie du code qui sera utilisé après une demande de clé.
- Enregistrer ce nouveau exécutable.
- Et quand on l'exécute, il demande la clef qui permet de décrypter le code précédemment crypter.
À aucun moment la clef et dans l'exécutable, comme pour les fichiers ZIP ( merci Dobro :wink: )
Et quand le Haker se retrouve devant l'algorithme de décryptage, que veux-tu qu'il fasse il y a des milliards de milliards de milliards... de possibilités, et en plus, les zones cryptés peuvent être inclus dans la clef comme information.
Je n'ai malheureusement pas le temps de faire un exemple aujourd'hui...
AYBABTU
Messages : 26
Inscription : mer. 10/août/2005 14:34

Message par AYBABTU »

erix14 a écrit :Et maintenant voici le même programme, mais avec les instructions RDTSC complètement camouflées :D
Comme cela, plus moyen de trouver le code $0F31 de l'instruction RDTSC.
Je n'ai pas été trop vicieux, c'est un exemple :D
Yeah bravo ! Ca c'est bien fait :) Perdu dans une grosse masse de code ca le fait bien :) Pour trouver ça fait bien tracer je pense quand meme :) Donc, bien joué !
AYBABTU
Messages : 26
Inscription : mer. 10/août/2005 14:34

Message par AYBABTU »

erix14 a écrit : On peut aussi en autorisant l'écriture sur tout l'exécutable, faire comme les fichiers ZIP, mais sans compression.
- Crypter une partie du code qui sera utilisé après une demande de clé.
- Enregistrer ce nouveau exécutable.
- Et quand on l'exécute, il demande la clef qui permet de décrypter le code précédemment crypter.
À aucun moment la clef et dans l'exécutable, comme pour les fichiers ZIP ( merci Dobro :wink: )
En effet :) D'ailleurs Julien nous avait fait un crackme de la sorte :p Mais attention à une chose, il faut bien choisir le code que vous allez crypter avec la clé entrée, Par exemple ne pas crypté des zones avec plein de 00, ou des zones de code devinables. C'est comme ça qu'on avait eu Julien ;) Mais c'est une très bonne idée.

Et autre chose, si la clé est mauvaise, le programme va crashé, il faut tenir compte de ça, voir faire en sorte de "gérer" le crash. (avec un gestionnaire d'exceptions sans doute)

erix14, tu nous fais un crackme un de ces 4 ? (sans mettre le code de ta protection avant, mais apres plutot :))


Julien, je mate ton crackme dès que je retourne sous windows, mais j'ai peur avec toi maintenant :) Et je transmets a Zorglub.
Dernière modification par AYBABTU le dim. 21/août/2005 18:43, modifié 1 fois.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Ce qui est sympa aussi, ce sont les mnémoniques non documentés... J'avais un pote qui s'était spécialisé là dedans. :)
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

en francais ca veut dire quoi ?? ^^

Dri
erix14
Messages : 480
Inscription : sam. 27/mars/2004 16:44
Contact :

Message par erix14 »

erix14, tu nous fais un crackme un de ces 4 ?
Il est déjà commencé :mrgreen:
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Dr. Dri a écrit :en francais ca veut dire quoi ?? ^^

Dri
Ben les mnémoniques, ce sont les instructions du langage machine défini par le fondeur du microprocesseur (en assembleur ce sont les MOV, ADD, CMP, etc.). Le fondeur donne toujours une documentation de son microprocesseur, mais quelques-unes de ces instructions ne sont pas documentées. Il est donc possible d'utiliser ces instructions "inconnues" pour faire faire certaines choses à l'ordinateur; et comme le debugger n'est pas censé les connaître, il n'est pas capable de les désassembler correctement. Cela pose évidemment quelques soucis au cracker :)
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

@AYBABTU, tu nous conseille quoi comme debugger ?
Moi j'ai tenté d'utilser SoftIce, mais sans succès...
J'ai pourtant utilisé un tut, ms sans succès...
J'essaye pourtant juste de debugger le prog suivant :

Code : Tout sélectionner

  ; Shows possible flags of StringGadget in action...
  If OpenWindow(0,0,0,322,275,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"StringGadget Flags") And CreateGadgetList(WindowID(0))
    StringGadget(0,8, 10,306,20,"Lionel")
    StringGadget(1,8, 35,306,20,"MyPass")
    ButtonGadget(2,8, 60,306,20,"Valider")
    
    Repeat 
      EventID = WaitWindowEvent()
      
      If EventID = #PB_Event_Gadget
      
        If EventGadgetID() = 2
          a$ = GetGadgetText(0)
          b$ = GetGadgetText(1)
          If a$ = "lio" And b$ = "lio"
            MessageRequester("", "Yes", 0)
            End
          Else
            MessageRequester("", "No", 0)
          EndIf
        EndIf
        
      EndIf
      
      
    Until EventID = #PB_Event_CloseWindow
  EndIf
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
gilbert2
Messages : 13
Inscription : mar. 09/août/2005 23:30

Message par gilbert2 »

Bonjour,

Je voulais juste preciser une chose d'importance qd on utilise le rdtsc, il est judicieux de le faire preceder d'une instruction cpuid sinon gare au effets de bord indesirables.

Lionel_om si tu souhaites debogguer avec les memes privileges que softice, il faut utiliser windbg. Ce debug est disponible en libre telechargement sur le site de microsoft.

Bye
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Merci, mais je n'y connais rien, donc qd tu me parle de "même privilèges", je ne sais pas de quoi tu parle :?
C'est dans le mag l'Ordi Indiv que j'ai entendu parlé de SoftIce pour un reportage sur les crackeurs (ya 2 mois).

Donc c'est le seul que je "connais", ms je connais juste le nom, pas le potentiel :0:
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
gilbert2
Messages : 13
Inscription : mar. 09/août/2005 23:30

Message par gilbert2 »

lionel_om a écrit :Merci, mais je n'y connais rien, donc qd tu me parle de "même privilèges", je ne sais pas de quoi tu parle :?
C'est dans le mag l'Ordi Indiv que j'ai entendu parlé de SoftIce pour un reportage sur les crackeurs (ya 2 mois).

Donc c'est le seul que je "connais", ms je connais juste le nom, pas le potentiel :0:
Hmm, je me suis permi de voir ton site. Ca va me permettre de te repondre plus aisement. :)

Les privileges comme leurs noms l'indiques des modes d'acces du processeur. Intel schematise les privileges processeurs sous formes d'anneaux (ring). Il en dispose de 5 du plus au moins critiques. Concretement a quoi ca sert ? Autoriser un acces speciaux "a la ram", au(x) cache(s) du processeur, a des instructions specifiques, des registres "caches".
Qd tu utilises windows, sans le savoir tu utilises le privileges 3 :) (ou ring 3).
Les developpeurs de drivers en tout genre utilisent couramment le niveau 0 autrement dit le mode le plus critique du processeur afin d'avoir une liberté d'agir totale. :)

Pour en revenir aux deboggueurs : certains sont capables d'acceder qu'au privileges de niveau 3 et d'autres comme softice ou windbg (le debug mis a notre disposition par microsoft) permettent d'avoir acces du ring 0 au ring 5.
Ed lincoln
Messages : 1
Inscription : lun. 22/août/2005 9:51

Message par Ed lincoln »

Code : Tout sélectionner

C'est dans le mag l'Ordi Indiv que j'ai entendu parlé de SoftIce pour un reportage sur les crackeurs
tu pourrais nous filer cet article ? :)
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

J'ai scanné les 4 pages (la partie sur SoftIce étant sur la page 4)

L'adresse : http://luchezl.free.fr/Temp/Piratage/ (total 1.5 Mo)


@gilbert2 :
Hmm, je me suis permi de voir ton site. Ca va me permettre de te repondre plus aisement. Smile
No pb :D
Par contre, dsl, je ne vois pas le rapport :?
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
gilbert2
Messages : 13
Inscription : mar. 09/août/2005 23:30

Message par gilbert2 »

lionel_om a écrit : No pb :D
Par contre, dsl, je ne vois pas le rapport :?
En fait, je souhaitais parler d'exception cpu (mais je me suis raviser car en parler succintement, c'est pas genial) .et voyant que tu as fait du c++ tu connais la notion d'exception....
Répondre