Page 6 sur 8

Publié : lun. 22/août/2005 11:08
par lionel_om
oki, oui je connais les Execptions (en C++ et en Java), mais j'aime pas trop ce système...
C'est mieux une prog plus propre plutot que de devboir capter tout un tas de bordel...

Publié : lun. 22/août/2005 12:05
par gilbert2
lionel_om a écrit :oki, oui je connais les Execptions (en C++ et en Java), mais j'aime pas trop ce système...
C'est mieux une prog plus propre plutot que de devboir capter tout un tas de bordel...
;o)

En tout cas, j'espere avoir repondu a ta question sur les deboggueurs. :=)

a++

Publié : lun. 22/août/2005 17:12
par AYBABTU
Merci lionel_om pour avoir scanné l'article. Evidement, et comme très souvent dans les magazines grand public, tout est mélangé. J'ai pas pris la peine de lire, je devrais sans doute le faire, mais là mon ecran est trop petit pour une lecture agréable :) En tout, j'ai vu les titres, et on y mélange le cracking, le warez, les divx, le piratage et meme le pire, la revente de logiciels illegaux. C'est sur, quand on est un "pirate" (je ne supporte pas ce terme), on est capable de tout faire, on est moralement imonde. (le seul truc que j'ai lu en entier dans l'article c'est le howto de la derniere page, pour cracker un logiciel. Enfin pour fisher un serial. Un truc qu'on fait au debut quoi, sur un logiciel vraiment pas protégé)

Histoire d'éclaircir les choses, je voudrais dire que 99% des crackeurs ne vendent pas de logiciels illegaux. (j'ai meme hesité a mettre 100%) Ceux qui vendent ça sont des imbeciles qui n'ont pas peur de grand chose. Mais ca leur retombera dessus un jour ou l'autre (voir 2bcalvi qui se fesait des sous avec les pubs de son site merdique)

Bon et sinon, a par ca, bah moi je te conseille ollydbg pour debugger, c'est le debuggeur le plus "user friendly" que je connaisse. Je fais casiment tout avec personnellement.

Et Julien, espece de <censuré> :D J'ai regardé ton crackme, il est bien plus tendu qu'avant. J'ai bien compris tout l'algo mais je ne pense pas réussir a le casser. (enfin a trouver le bon serial). Je tente quelques methodes de bruteforce en ce moment mais j'y crois pas trop, si le serial fait plus de 6 caracteres je suis baisé :) Pour le cracker, je pourrais bidouiller quelques trucs, je vois comment, mais ca ne marcherait que sur le crackme. Si tu decidais de mettre la meme protection sur un de tes softs, avec dans la dll decryptée des routines ne concernant pas que la registration (si tu laisses que des trucs de registration dedans, c'est inutile), alors c'est l'exemple donnée plus haut de cryptage de fichier avec un serial fixe. (et le vilain il a copier/coller l'exemple de erix sur le RDTSC :p) Honnetement, je pense que c'est fesable, en y passant du temps (beaucoup). Parce que la structure d'un dll, c'est connu, Mais ton algo est bien méchant tout de meme (30 secondes pour créer la dll sur un 2400+ ! ) Le seul inconvient que je vois a ce type de routine, c'est que le serial est fixe (le nom ne sert a rien ici) Donc si un de tes clients est "pourris", c'est finis, on a la dll decryptée. Mais je m'avoue pas vaincu encore, ne donne pas la solution stp :)

Publié : lun. 22/août/2005 17:39
par julien
Oui j'ai piqué le bout de code à erix14 (que je remercie +++) pour l'anti debug (il est vraiment bien ce code ),
Je te laisse chercher, :D


Tace le code que tu entre, que remarque tu ?

Par contre il est clair que si un client refile son code, c'est foutu, une autre solution est lors d'une activation en ligne de renvoyer le bon code pour le décryptage des fichiers, le code n'est pas connu par le client. Qu'en pense tu ?

Publié : lun. 22/août/2005 17:44
par AYBABTU
julien a écrit :Oui j'ai piqué le bout de code à erix14 (que je remercie +++) pour l'anti debug (il est vraiment bien ce code ),
Je te laisse chercher, :D
C'est pas méchant a virer ca, il suffit de nopper le second RDTSC ;)
julien a écrit : Tace le code que tu entre, que remarque tu ?
Je remarque que tu adores le md5 ;) Mais pas le simple ... C'est pas bete d'avoir verifié comme ca d'abord si le serial etait valide, ca evite de crasher le programme.
julien a écrit : Par contre il est clair que si un client refile son code, c'est foutu, une autre solution est lors d'une activation en ligne de renvoyer le bon code pour le décryptage des fichiers, le code n'est pas connu par le client. Qu'en pense tu ?
Bon plan en effet. La il faudrait que le client "pourris" en question ait des competences pour étudier comment ca fonctionne. En gros, faut que le crackeur paye ton soft :)

Publié : lun. 22/août/2005 17:58
par julien
pour aller plus loin, j'imagine ceci :
le code donné au client contient une partie de la clef de décryptage (ce code est fabriqué à partir de son nom, prenom email...)
Lors d'une activation un serveur renvoie une autre partie de la clef composé de son nom, email....

Il y'a décryptage des fichiers avec TAG des fichiers (nom/prenom)

Je pense que c'est faisable, mais trop lourd pour des petit softs :)

Publié : ven. 26/août/2005 9:18
par bombseb
tres interessant ce thread...mais j'ai eu la flemme de tout lire désolé :oops:
Fred parlait d'exe automodifiable et disais que c'était possible. C'est peut être une solution pour stocker ce genre de chose...
faire un exe automodifiable n'est pas une tres bonne chose je pense... les antivirus vont détecter une modification de l'exe et vont croire qu'il à été infecté par un virus...

sinon je me disait quand début d'un prog il y a peut etre moyen du code executable crypté non ?
à chaque execution le code est décrypté en mémoire et executé. ce code controlerais la validité du programme...
mais bon c'est toujours possible de cracker ce genre de protection...

Publié : ven. 26/août/2005 9:19
par bombseb
merde je m'apercoit que vous étiez justement en train de parler de cryptage... j'avais pas lu tout le thread je vous l'ai dit :oops:

Publié : dim. 28/août/2005 11:11
par erix14
Voici un petit algorithme de cryptage, de ma composition. :D
Même en ayant l'algorithme sous les yeux, le cracker aura du mal... Qu'en pensez-vous ?
N'oubliez pas d'activer l'assembleur en ligne.

Code : Tout sélectionner

;/
;/                    Algorithmes de cryptage et de décryptage
;/                   Programme Eric Ducoulombier ( Erix14 ) 
;/                  Windows XP SP2 - PureBasic 3.94 - jaPBe 2.5.4.22
;/                                   28/08/2005 
;/ 
Enumeration
     #Window_0
EndEnumeration
Enumeration
     #Editor_0
     #String_0
     #Button_0
     #Button_1
     #Text_0
EndEnumeration

Global FontID1,FontID2
FontID1 = LoadFont(1, "Times New Roman", 12, #PB_Font_Bold)
FontID2 = LoadFont(2, "Verdana", 10)

Procedure GenKey()
     Key.s = ""
     For t=0 To 19
          Char = Random(35)
          If Char < 10
               Key + Chr(48+Char)
          Else
               Key + Chr(55+Char)
          EndIf
     Next
     SetGadgetText(#String_0,Key) 
EndProcedure
Procedure AfficheMemoire(*Char.BYTE,Longueur)
     Texte.s = ""
     For t=0 To Longueur Step 16
          Texte + RSet(Hex(t),4,"0") + Chr(9) + ":"
          For r=0 To 15
               Texte + Chr(9) + RSet(Hex(*Char\b & $FF),2,"0")
               *Char + 1
          Next
          Texte + Chr(13)
     Next
     SetGadgetText(#Editor_0,Texte)
EndProcedure
Procedure Crypter(*Char.BYTE,Longueur,Key.s)
     Debut = *Char
     Fin = Debut + Longueur
     ; Première passe
     *CharKey1.BYTE = @Key
     pKeyRec = 0
     For t=0 To 3
          pKeyRec + ((*CharKey1\b - 48) & $F)
          pKeyRec << 4
          *CharKey1 + 1
     Next
     Debug Hex(pKeyRec)
     IndB.w = 1
     While *Char <= Fin
          *CharKey1 = @Key
          For r=0 To 11
               MOV al,*Char\b
               XOR al,*CharKey1\b
               ROL al,4
               MOV *Char\b,al
               *Char + 1
               *CharKey1 + 1
          Next
          If pKeyRec & IndB
               *Char + 1
          EndIf
          ROL IndB,1
     Wend
     ; Seconde passe
     *Char = Debut
     *CharKey2.BYTE = @Key + 12
     pKeyRec = 0
     For t=0 To 3
          pKeyRec + ((*CharKey2\b - 48) & $F)
          pKeyRec << 4
          *CharKey2 + 1
     Next
     Debug Hex(pKeyRec)
     IndB.w = 1
     While *Char <= Fin
          *CharKey2 = @Key + 12
          For r=0 To 7
               MOV al,*Char\b
               XOR al,*CharKey2\b
               MOV *Char\b,al
               *Char + 1
               *CharKey2 + 1
          Next
          If pKeyRec & IndB
               *Char + 1
          EndIf
          ROL IndB,1
     Wend
EndProcedure
Procedure Decrypter(*Char.BYTE,Longueur,Key.s)
     Debut = *Char
     Fin = Debut + Longueur
     ; Première passe
     *CharKey2.BYTE = @Key + 12
     pKeyRec = 0
     For t=0 To 3
          pKeyRec + ((*CharKey2\b - 48) & $F)
          pKeyRec << 4
          *CharKey2 + 1
     Next
     Debug Hex(pKeyRec)
     IndB.w = 1
     While *Char <= Fin
          *CharKey2 = @Key + 12
          For r=0 To 7
               MOV al,*Char\b
               XOR al,*CharKey2\b
               MOV *Char\b,al
               *Char + 1
               *CharKey2 + 1
          Next
          If pKeyRec & IndB
               *Char + 1
          EndIf
          ROL IndB,1
     Wend
     ; Seconde passe
     *Char = Debut
     *CharKey1.BYTE = @Key
     pKeyRec = 0
     For t=0 To 3
          pKeyRec + ((*CharKey1\b - 48) & $F)
          pKeyRec << 4
          *CharKey1 + 1
     Next
     Debug Hex(pKeyRec)
     IndB.w = 1
     While *Char <= Fin
          *CharKey1 = @Key
          For r=0 To 11
               MOV al,*Char\b
               ROR al,4
               XOR al,*CharKey1\b
               MOV *Char\b,al
               *Char + 1
               *CharKey1 + 1
          Next
          If pKeyRec & IndB
               *Char + 1
          EndIf
          ROL IndB,1
     Wend
EndProcedure

Dim Tab.l(17)
Tab(0) = 36
For t=1 To 16
     Tab(t) = 25 + t * 24
Next
     
Style = #PB_Window_SystemMenu|#PB_Window_Invisible|#PB_Window_ScreenCentered
If OpenWindow(#Window_0, 319, 171, 600, 600, Style, "crypte & décrypte")
     If CreateGadgetList(WindowID())
          EditorGadget(#Editor_0, 10, 40, 580, 550)
          SendMessage_(GadgetID(#Editor_0),#EM_SETBKGNDCOLOR,#Null,RGB(100,150,200))
          SendMessage_(GadgetID(#Editor_0),#EM_SETTABSTOPS,17,@Tab(0))
          SetGadgetFont(#Editor_0, FontID2)
          StringGadget(#String_0, 180, 10, 200, 20, "", #PB_String_UpperCase)
          SendMessage_(GadgetID(#String_0), #EM_LIMITTEXT, 16, 0)
          ButtonGadget(#Button_0, 400, 10, 90, 20, "KeyGen")
          ButtonGadget(#Button_1, 500, 10, 90, 20, "Crypter")
          TextGadget(#Text_0, 10, 10, 160, 20, "Clés de cryptage :", #PB_Text_Center)
          SetGadgetFont(#Text_0, FontID1)
     EndIf
     HideWindow(#Window_0,0)
EndIf
Memoire = AllocateMemory($FFF)
FillMemory_(Memoire,$1000,$00)
AfficheMemoire(Memoire,$FFF)
GenKey()

Repeat
     Event = WaitWindowEvent()
     WindowID = EventWindowID()
     GadgetID = EventGadgetID()
     EventType = EventType()
     If Event = #PB_EventGadget
          If GadgetID = #Editor_0
          ElseIf GadgetID = #String_0
          ElseIf GadgetID = #Button_0
               GenKey()
          ElseIf GadgetID = #Button_1
               If GetGadgetText(#Button_1) = "Crypter"
                    Crypter(Memoire,$FFF,GetGadgetText(#String_0))
                    AfficheMemoire(Memoire,$FFF)
                    SetGadgetText(#Button_1,"Décrypter")
               Else
                    Decrypter(Memoire,$FFF,GetGadgetText(#String_0))
                    AfficheMemoire(Memoire,$FFF)
                    SetGadgetText(#Button_1,"Crypter")
               EndIf
          EndIf
     EndIf
Until Event = #PB_Event_CloseWindow
End

Publié : dim. 28/août/2005 18:52
par erix14
Passons maintenant aux choses sérieuses :D
Voici mon CrackMe :
http://home.tele2.fr/erix14/CrackMe_Erix14.exe
Si vous réussissez à le cracker, vous allez pouvoir me donner le code inscrit sur la page protégée, cela prouvera votre réussite...
Si personne ne réussit dans plusieurs semaines, je donnerai la clé de mon CrackMe.
J'ai passé mon CrackMe à l'antivirus BitDefender v8, pour lui c'est un Exe comme les autres.
Amusez-vous bien :wink:

Publié : dim. 28/août/2005 21:30
par julien
@AYBABTU
@zorglub

une semaine après le post de mon crack-me v3, ou en êtes vous ?


@Erix14, j'ai regardé le tiens, superbe graphisme ! :)

Publié : mar. 30/août/2005 8:49
par scaraber
l'algo de criptage ne marche pas...

Publié : mar. 30/août/2005 18:54
par erix14
scaraber a écrit :l'algo de criptage ne marche pas...
erix14 a écrit :N'oubliez pas d'activer l'assembleur en ligne

Publié : mer. 31/août/2005 12:55
par scaraber
comment on lactive ne ligne ?

Publié : mer. 31/août/2005 13:53
par Anonyme2
scaraber a écrit :comment on lactive ne ligne ?
Menu compilateur/option de compilation et tu coches la ligne ensuite valide avec le bouton Ok