Nom : HexWorkshop Version : 3.01 (14 nov 99) Disponibilité : http://www.bpsoft.com Protections : Nag/trial outils : Softice 4.0 Editeur hexa (Hexworkshop 3.01!) Hexworkshop est un petit editeur hexa bien sympa : c'est celui la que j'utilise le plus (certains vous diront qu'Hview est le meilleur, mais je ne suis pas d'accord : les deux se valent...) . La protection du soft réside dans une période d'essai et un nag qui s'affiche au démarrage, lorsque vous avez dépassécette période d'essai. On va peter ça en deux minutes avec Softice... Step 1: On prend symbol loader et on ouvre HW . On trace avec la touche F10 .Et on arrive rapidement à ceci : 015F:0047E103 JZ 0047E140 015F:0047E105 TEST EDI,EDI 015F:0047E107 JZ 0047E117 015F:0047E109 MOV EAX,[EDI] 015F:0047E10B MOV ECX,EDI 015F:0047E10D CALL [EAX+00000084] 015F:0047E113 TEST EAX,EAX 015F:0047E115 JZ 0047E140 015F:0047E117 MOV EAX,[ESI] 015F:0047E119 MOV ECX,ESI 015F:0047E11B CALL [EAX+50] ------------ ouvre hexworkshop 015F:0047E11E TEST EAX,EAX ------------ test eax avec 0 015F:0047E120 JNZ 0047E137 ------------ saute si eax>0 (periode d'essai non terminée) 015F:0047E122 MOV ECX,[ESI+1C] 015F:0047E125 TEST ECX,ECX 015F:0047E127 JZ 0047E12E 015F:0047E129 MOV EAX,[ECX] ----------- periode d'essai terminée 015F:0047E12B CALL [EAX+58] ----------- ici on ferme le proggy.... 015F:0047E12E MOV EAX,[ESI] 015F:0047E130 MOV ECX,ESI 015F:0047E132 CALL [EAX+68] 015F:0047E135 JMP 0047E13E 015F:0047E137 MOV EAX,[ESI]----------- sinon 015F:0047E139 MOV ECX,ESI 015F:0047E13B CALL [EAX+54]------------ on laisse le proggy ouvert 015F:0047E13E MOV EBX,EAX 015F:0047E140 CALL 00496A98 Pour arriver à l'addresse 47E11B , il va falloir que vous rentriez dans plusieurs calls a l'aide de la touche F8 de softice . Donc le CALL [EAX+50] de l'addresse 47E11B ouvre hexworkshop . Si vous tracez ce call avec la touche F10, le saut qui suit (JNZ 0047E137,en 47E120) est effectué .Et si vous avancez votre horloge de façon à terminer la période d'essai (le soft doit se bloquer), ce saut n'est plus effectué . Ce qui à pourconséquence de nous sortir du proggy via le CALL [EAX+58]... Il suffit donc forcer le proggy a effectuer le saut en 47E120 pour eviter que le soft ne se ferme si la période d'essai est terminée...On remplace donc le JNZ 0047E137 par un JMP 0047E137... Mais il y a quand même un nag qui s'affiche à chaque démarrage...On va le virer aussi... Step 2 Donc le CALL [EAX+50] en 47E11B , ouvre le proggy et balance le nag... On va tracer le call, c'est à dire rentrer à l'interieur pour voir ce qui s'y passe. Lorsque vous êtes à l'addresse 47E11B, vous faites F8.vous devriez avoir ceci sous les yeux : 015F:0040D2F7 PUSH 01 015F:0040D2F9 MOV ECX,ESI 015F:0040D2FB CALL 0047A2B2 015F:0040D300 LEA EAX,[EBP-14] 015F:0040D303 MOV ECX,EDI 015F:0040D305 PUSH EAX 015F:0040D306 CALL 0040D03B ---balance le nag : rentrez dans ce call avec F8 015F:0040D30B TEST AL,AL 015F:0040D30D JNZ 0040D320 015F:0040D30F MOV DWORD PTR [004CD634],00000001 015F:0040D319 XOR EAX,EAX 015F:0040D31B JMP 0040D586 En tapant F8, et en continuant la trace avec F10 on arrive en 0040D306, CALL 0040D03B.Cette fois c'est cecall qui balance le nag .Comme tout à l'heure on tape F8 et on continue la trace avec F10 .On voit alors ceci: 015F:0042D9FD PUSH ESI 015F:0042D9FE PUSH 6A 015F:0042DA00 PUSH DWORD PTR [004D4AFC] 015F:0042DA06 MOV ESI,00000102 015F:0042DA0B CALL [KERNEL32!GetProcAddress] 015F:0042DA11 TEST EAX,EAX 015F:0042DA13 JZ 0042DA1D 015F:0042DA15 PUSH DWORD PTR [ESP+08] 015F:0042DA19 CALL EAX ---------- ce call appelle la dll bpsregwd.dll (f8) 015F:0042DA1B MOV ESI,EAX 015F:0042DA1D MOV EAX,ESI 015F:0042DA1F POP ESI 015F:0042DA20 RET On arrive rapidement en 42DA19 et on remarque un call bizarre : CALL EAX ... Ce call appelle en fait une DLL du soft : bpsregwd.dll . C'est cette DLL qui teste si nous sommes des utilisateurs enregistrés ou pas...Une fois en 42DA19, on fait F8 pour entrer encore une fois dans le CALL EAX . Et enfin, on arrive à ceci: 015F:1000123E MOV ECX,[ESP+04] 015F:10001242 PUSH 06 015F:10001244 POP EAX 015F:10001245 CMP BYTE PTR [ECX+0000022C],00 015F:1000124C JZ 1000126F ------------------ interressant.... 015F:1000124E LEA EAX,[ECX+00000128] 015F:10001254 PUSH EAX 015F:10001255 LEA EAX,[ECX+28] 015F:10001258 PUSH EAX 015F:10001259 MOV AL,[ECX+20] 015F:1000125C PUSH DWORD PTR [ECX+24] 015F:1000125F PUSH DWORD PTR [ECX+00000228] 015F:10001265 PUSH EAX 015F:10001266 PUSH ECX 015F:10001267 CALL 1000264C------------------ le call qui balance le nag 015F:1000126C ADD ESP,18 015F:1000126F RET 0004 En traçant rapidement avec F10, on voit que le CALL 1000264C balance le nag . Et juste au dessus, on remarque un joli saut conditionnel, qui, s'il est effectué, nous fait sauter au dessus du nag ...Remplacez donc le JZ 1000126F de l'addresse 1000124C par un JMP 1000126F ...Bingo! Le nag ne s'affiche plus... Et la période d'essai a disparue.... Pour ce crack,prendre son éditeur hexa et recherchez : Dans le fichier hworks32.exe : FF,50,50,85,C0,75,15,8B,4E Remplacez par : FF,50,50,85,C0,EB,15,8B,4E Dans le fichier bpsregwd.dll : 74,21,8D,81,28,01,00,00,50,8D Remplacez par : EB,21,8D,81,28,01,00,00,50,8D TaMaMBoLo/CC/SML/SNT