Nom : Installer 2000 Version :3.42 Protections : serial,nag,vb Disponibilité : http://pages.ripco.com:8080/~swb/ Tools : Softice 4.0 Editeur hexa brain Installer 2000 est un petit soft qui permet de décompresser (et décompresser seulement)des fichiers rar,zip et ace . C'est un soft vraiment bien foutu . Dès que vous décompressez un truc, le soft crée un répertoire temp qui l'efface lors de la prochaine utlisation d'installer 2000 . Si l'archive a une double compression (Zip+Ace par exemple) , le soft le detect tout seul et vous décompresse les deux formats comme un grand ... Cela dit, c'est vachement pratique pour installer les gamez ramenées du Net... Le soft a été écrit en Visual Basic 5 . Par consequent, il faut updater notre Winice.dat.On rajoute la ligne suivante : EXP=c:\windows\system\msvbvm50.dll Maintenant on peut 'breaker' du VB5 avec Softice ... Step 1 On lance installer 2000 et on va dans l'option qui permet de changer de disk dur temporaire (dans 'option' et 'installation drive') . Et en changeant de drive, un joli nag apparait : "this option is enable in registered version" .On va attaquer le soft par là. Ce nag, c'est clair , ça à trop la gueule d'un MessageBox ... Bon, comme c'est codé en VB5, le traditionnel BPX Messagebox (ou MessageBoxA) n'aura aucun effet ... Par contre , BPX msvbvm50!rtcmsgbox marchera tout de suite beaucoup mieux ... On fait surgir SI en pressabt CTRL D . On entre notre breakpoint : BPX msvbvm50!rtcmsgbox . Et de nouveau on va dans l'option pour changer de drive . Ce coup-ci SI s'est déclenché.On presse UNE SEULE FOIS F12 et on clique sur le 'OK' du NAG . SI se remet en route et on a ceci sous les yeux : 015F:004859D3 MOVSX EDX,WORD PTR [00490130]--- héhéhé... 015F:004859DA TEST EDX,EDX-------- EDX=0 ? 015F:004859DC JNZ 00485AA2------- oui, on ne saute pas (bad boy) 015F:004859E2 MOV DWORD PTR [EBP-04],00000003 015F:004859E9 MOV DWORD PTR [EBP-78],80020004 015F:004859F0 MOV DWORD PTR [EBP-80],0000000A 015F:004859F7 MOV DWORD PTR [EBP-68],80020004 015F:004859FE MOV DWORD PTR [EBP-70],0000000A 015F:00485A05 MOV DWORD PTR [EBP-0098],0041E9D4 015F:00485A0F MOV DWORD PTR [EBP-00A0],00000008 015F:00485A19 LEA EDX,[EBP-00A0] 015F:00485A1F LEA ECX,[EBP-60] 015F:00485A22 CALL [MSVBVM50!__vbaVarDup] 015F:00485A28 MOV DWORD PTR [EBP-0088],0041F190 015F:00485A32 MOV DWORD PTR [EBP-0090],00000008 015F:00485A3C LEA EDX,[EBP-0090] 015F:00485A42 LEA ECX,[EBP-50] 015F:00485A45 CALL [MSVBVM50!__vbaVarDup] 015F:00485A4B LEA EAX,[EBP-80] 015F:00485A4E PUSH EAX 015F:00485A4F LEA ECX,[EBP-70] 015F:00485A52 PUSH ECX 015F:00485A53 LEA EDX,[EBP-60] 015F:00485A56 PUSH EDX 015F:00485A57 PUSH 30 015F:00485A59 LEA EAX,[EBP-50] 015F:00485A5C PUSH EAX 015F:00485A5D CALL [MSVBVM50!rtcMsgBox]----- Le messageBox 015F:00485A63 MOV [EBP-00C8],EAX--- on a atterit ici avec SI On repère facilement notre messagebox à l'addresse 485A5D . Et en remontant un peu plus haut dans le code,à l'addresse 4859D3, on voit que l'addresse mémoire 490130 est mise dans le registre EDX via le MOVSX .Ensuite le programme test le contenu de EDX : TEST EDX,EDX en 4859DA . Ce test est suivit d'un saut conditionnel . Ce dernier n'est effectué que si EDX>0 , c'est à dire quand on est des users regged... Bon, il faut donc repérer dans le code, à quel moment le porggy met 490130 à 0. Step 2 On aurait put prendre windasm et faire une recherche sur la chaine hexa 300149 (300149=490130) pour voir où cette addresse est appelée dans le code . Moi,j'ai utlisé SI only ... Il y a un breakpoint qui est vachement pratique pour repérer si tel ou tel endroit mémoire est lu ou ecrit . C'est le breakpoint BPM (BreakPoint on Memory) . Nous, ce qu'on cherche, c'est à quel moment le proggy met 490130 à 0 . Il faut donc placer un BPM sur 490130 . Prenez Symbol loader et ouvrez installer2000 . Entrez votre breakpoint : BPM 490130 W Le W c'est pour WRITE . A noter que si on avait voulu savoir à quel momemt le prog lisait (donc sans écrire) , il aurait fallut rajouter R (BPM 490130 RW) . Mais on s'en tape dans notre cas : seul l'ecriture dans cette case mémoire nous interresse . Une fois votre BPM 490130 W placé, relancez le tout avec la touche F5 . Attention ! SI va se bloquer une première fois . C'est pas interressant pour nous puisque le premier break s'effectue dans la DLL du VB5 . Nous ce qu'on cherche c'est plutot le code principal du proggy . Au premier break, on appuie UNE SEULE FOIS sur F5 . Et SI se bloque ici : 015F:00439112 TEST AX,AX 015F:00439115 JZ 00439131 015F:00439117 MOV WORD PTR [00490130],0000--- ce qu'on cherchait 015F:00439120 CALL [MSVBVM50!__vbaExitProc]--- SI se bloque là ou 2ème arret 015F:00439126 WAIT 015F:00439127 PUSH 00439595 015F:0043912C JMP 0043952C 015F:00439131 MOV DWORD PTR [EBP-0138],00000001 015F:0043913B MOV EDI,00000002 015F:00439140 MOV [EBP-0140],EDI 015F:00439146 MOV DWORD PTR [EBP-0148],00000004 015F:00439150 MOV [EBP-0150],EDI 015F:00439156 MOV DWORD PTR [EBP-0158],00000000 015F:00439160 MOV [EBP-0160],EDI 015F:00439166 LEA EDX,[EBP-0140] Et le deuxième arrêt est tout de suite beaucoup plus interressant...On voit un joli MOV WORD PTR [00490130],0000 en 439117 qui va nous mettre le contenu de 490130 à 0. Et bien le voilà notre endroit qui fout 490130 à 0 ... Effacez tous les breakpoints: sous SI BC * . Reprenez symbol loader et rouvrez installer2000 .Mettez un breakpoint à l'addresse 439117 : sous SI , BPX 439117 et relancez le tout avec avec F5 .BiNG! SI se bloque en 439117 . Remplacez le MOV WORD PTR [00490130],0000 par un MOV WORD PTR [00490130],0001 . Relancez le tout avec F5 .Et ben voilà, c'est cracké: maintenant dans 'AbOUT' il y a marqué 'Registered' et toutes les options sont accessibles ....:) Pour ce crack , prendre son éditeur hexa et se rendre à l'offset : 3851F et mettre 01 . TaMaMBoLo/CC/SNT/SML