Méthodes basiques anti-cracking
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
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...
C'est mieux une prog plus propre plutot que de devboir capter tout un tas de bordel...
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
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é>
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 

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é>



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,
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 ?
Je te laisse chercher,

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 ?
C'est pas méchant a virer ca, il suffit de nopper le second RDTSCjulien 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,![]()

Je remarque que tu adores le md5julien a écrit : Tace le code que tu entre, que remarque 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 softjulien 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 ?

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
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

tres interessant ce thread...mais j'ai eu la flemme de tout lire désolé
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...

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...Fred parlait d'exe automodifiable et disais que c'était possible. C'est peut être une solution pour stocker ce genre de chose...
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...
Voici un petit algorithme de cryptage, de ma composition.
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.

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
Passons maintenant aux choses sérieuses
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

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
