Nom : Melody Assistant Version : 4.2.1 Disponibilité :http://www.myriad-online.com Protections : Checksum/nag/Fonctions désactivées Tools : Softice 4.0 Windasm 8.93 Editeur Hexa Brain/ganja/clopes/feuilles Melofy Assistant un soft d'aide à la composition musicale : c'est le complément idéal à Harmony assistant...Bon, c'est la même boîte que Harmony assistant, donc il y a de fortes chances que les portections soient lesmêmes ....Et effectivement, ce sont les mêmes ... Il est impossible d'utiliser les breakpoints standarts :aucun ne work ... Par contre , comme on a déjà cracké Harmony assistant, ça ne devrait pas nous prendre longtemps pour cracker ce proggy... Step 1 Comme pour Harmony, j'ai tracer le proggy depuis le début avec softice afin de trouver l'endroit où était affiché le nag . On prend donc symbol loader et on ouvre le proggy . Une trace rapide avec la touche F10 nous amène ici : 015F:00560EF1 PUSH EAX 015F:00560EF2 CALL 0055E552--------- le premier call qui initialise le proggy 015F:00560EF7 PUSH EAX 015F:00560EF8 CALL 0054C920--------- le call qui ferme le proggy (important!) 015F:00560EFD POP ECX 015F:00560EFE LEA ESP,[EBP-08] 015F:00560F01 POP ESI 015F:00560F02 POP EBX 015F:00560F03 POP EBP 015F:00560F04 RET Comme c'est la même technique que pour Harmony, je ne reviends poa sur la trace pour arriver au nag : notez juste que le CALL 54C920 ferme le proggy . Donc en traçant avec F10 (et F8 kan il faut) on arrive à ceci : 015F:004B8973 MOV EBX,[EAX] 015F:004B8975 CALL [EBX+08]----------- le call qui teste si on est enregistré 015F:004B8978 TEST AL,AL-------------- al=0 ? 015F:004B897A JNZ 004B8A4C----------- oui ! on ne saute pas... 015F:004B8980 MOV EAX,[00569736] 015F:004B8985 PUSH EAX 015F:004B8986 CALL 0053E9FF------- sinon... 015F:004B898B MOV EAX,[00569736] 015F:004B8990 POP ECX 015F:004B8991 PUSH 00 015F:004B8993 PUSH 04 015F:004B8995 PUSH EAX 015F:004B8996 CALL 00520B60-------- affichage du nag 015F:004B899B MOV EAX,[00569736] 015F:004B89A0 ADD ESP,0C 015F:004B89A3 PUSH 01 015F:004B89A5 PUSH 01 015F:004B89A7 PUSH EAX 015F:004B89A8 CALL 00520B60 015F:004B89AD MOV EAX,[00569736] 015F:004B89B2 ADD ESP,0C 015F:004B89B5 PUSH 01 015F:004B89B7 PUSH 02 Si vous vous souvenez du crack d'harmony assistant, la routine pour déterminer si on est regged ou pas ressemble furieusement à harmony ...Rentrons dans le CALL [EBX+08] avec la touche F8 de softice .On alors ceci sous les yeux : 015F:004A44B0 CMP BYTE PTR [00569150],00---- 569150=0 ? 015F:004A44B7 JZ 004A44C2------------------ oui : on saute (bAd BOy !) 015F:004A44B9 CMP BYTE PTR [00569219],00 015F:004A44C0 JNZ 004A44C5 015F:004A44C2 XOR AL,AL--------------------- bAd BOy ! AL=0 ... 015F:004A44C4 RET 015F:004A44C5 PUSH 00569219 015F:004A44CA CALL 004A47E0 015F:004A44CF POP ECX 015F:004A44D0 RET Bon , c'est EXACTEMENT comme harmony...Si la comparaison entre l'addresse 569150 et 00 est vraie,on est poa des users regged .On saute donc vers 4A44C2 XOR AL,AL ... Et bien remplacez donc le XOR AL,AL par un MOV AL,1 (c'est le meme nombre d'octets , donc pas la peine d'équilibrer le code..Pour faire la modif sous softice , tapez E 4A44C2 et remplacez le 33,C0 par B0,01 . Et relancez le tout avec la touche F5 . Bingo ! (ça aurait été étonnant...) le soft croit que l'on est regged ...Prenez votre éditeur Hexa, faites la modif et lancez le prog .Là, ça marche plus ... Step 2 En allant dans l'option '?' et 'A propos de' le proggy nous indique qu'il a peut être été infecté par un virus (lol!) . Bon, comme pour harmony, on va utiliser la même technique pour cracker le lame checksum ... Dans le step 1, premier désassemblage, on avait repéré le call qui fermait le proggy (CALL 54C920) .Et bien on prend symbol loader et on ouvre le proggy . On fout un breakpoint en 54C920 (sous softice ,BPX 54C920) et on lance le prog avec F5. Une fois dans le proggy, on clique sur l'option '?' et 'A propos de' . Le soft nous balance son putain de message à la con,et en cliquant sur 'OK',Softice se bloque en 54C920 ... On a donc ceci sous les yeux : 015F:0054C920 PUSH ESI 015F:0054C921 PUSH EDI 015F:0054C922 SUB ESP,18 015F:0054C925 LEA EDI,[ESP+08] 015F:0054C929 MOV ESI,005FBC10 015F:0054C92E MOVSD 015F:0054C92F MOVSD 015F:0054C930 MOVSD Bon la routine qui ferme le proggy , on s'en tape... On va lui mettre un RET au début pour voir d'où elle vient . Sous softice A 54c920 et on entre RET. Escape pour quitter l'éditeur AsM de softice.Et on continue la trace avec F10 . On arrive alors ici : 015F:00543A93 PUSH 00 015F:00543A95 CALL 0054C920 015F:00543A9A POP ECX------ on a atterrit ici 015F:00543A9B RET Encore un peu de F10 pour enfin arriver à quelque chose d'interressant : 015F:00486B0A CALL 004968A0 015F:00486B0F MOV ECX,[005D50EC]------ le premier checksum 015F:00486B15 MOV EBP,EAX 015F:00486B17 MOV EAX,[005D5140]------ le premier checksum original(5d5140) 015F:00486B1C CMP ECX,EAX 015F:00486B1E JNZ 00486B2F 015F:00486B20 MOV EAX,[005D576C]------ le second checksum 015F:00486B25 MOV EDX,[005D51D4]------ le second checksum original(5d51d4) 015F:00486B2B CMP EDX,EAX 015F:00486B2D JZ 00486B3F 015F:00486B2F PUSH 000000D4 015F:00486B34 CALL 0048F7C0 015F:00486B39 POP ECX 015F:00486B3A CALL 00543A93 015F:00486B3F PUSH EBP----------------- en traçant avec F10,on arrive ici . 015F:00486B40 CALL 00493940 015F:00486B45 TEST AL,AL 015F:00486B47 POP ECX 015F:00486B48 JZ 00486B50 015F:00486B4A JMP 00486B52 015F:00486B4C LEA EAX,[EAX+00] Tiens,tiens ça ressemble again à Harmony assistant...Le résultat du premier checksum est mis en 5D50EC . Le second en 5D576C . Le premier checksum original est en 5D5140 et le second en 5D51D4 . Bon 'y plus qu'a chercher avec Windasm où dans le code ,ces cases mémoires sont appelées ... Step 3 On prend Windasm ,on désassemble l'exe.On va chercher la première addresse mémoire: 5D50EC .Attention ! Je rappelle qu'en hexa on met le byte de poids faible devant ... Donc ,5D50EC = EC505D ...Windasm va trouver plusieurs endroits dans le code où cette addresse est référencée :les CMP 5D50EC,XX ,on s'en tape !En fouillant bien on tombe sur ça : :004B8B90 59 pop ecx :004B8B91 6A27 push 00000027 :004B8B93 E828BCFCFF call 004847C0 :004B8B98 59 pop ecx :004B8B99 E87289FFFF call 004B1510 :004B8B9E E8AD88FFFF call 004B1450 :004B8BA3 68D4515D00 push 005D51D4-------- tiens,tiens... :004B8BA8 68EC505D00 push 005D50EC-------- ce kon cherchait ... :004B8BAD E86EC6FDFF call 00495220-------- calcul les checksums originaux :004B8BB2 59 pop ecx En 4B8BA8 on repère un joli push 005D50EC et juste au dessus(4B8BA3) un push 5D51D4. Le tout suivit d'un joli call ... Bah le voilà le premier calcul des checksums (les orginaux) .Il nous faut juste virer le call 495220 pour que 5D50EC et 5D51D4 soient égals à 0 .Maintenant , il faut que l'on trouve les appels aux addresses 5D5140 & 5D576C .Meme technique que précédement :windasm (et on entre les addresses à l'envers... ) . On trouve ceci qui nous met le puce à l'oreille : :004B87C8 6A01 push 00000001 :004B87CA 6840515D00 push 005D5140------ ce kon cherchait :004B87CF E84CFE0700 call 00538620------ calcul 1er checksum :004B87D4 83C410 add esp, 00000010 :004B87D7 53 push ebx :004B87D8 6A04 push 00000004 :004B87DA 6A01 push 00000001 :004B87DC 686C575D00 push 005D576C------ ce kon cherchait :004B87E1 E83AFE0700 call 00538620------ calcul 2ème checksum :004B87E6 83C410 add esp, 00000010 :004B87E9 6A00 push 00000000 :004B87EB 6A00 push 00000000 :004B87ED 53 push ebx Comme précédement, c'est le call 538620 qui va calculer les checksums ... Il suffit aussi de virer ces deux calls (addresse 4B87CF & 4B87E1) pour que les addresses 5D5140 & 5D576C soient elles aussi égales à 0 . De cette façon,le proggy aura beau tester les addresses entres elles : les 4 seront toujours égales à 0 et donc la comparaison entre ces deux addresses sera toujours bonne (0=0 non ?) . Prenez votre éditeur héxa et faites les 3 modifs : BOOm!'y work ... Pour ce crack, prendre sont éditeur héxa, et se rendre aux offsets suivants : A38C2 et mettre B0,01 B7BCF et mettre 90,90,90,90,90 B7BE1 et mettre 90,90,90,90,90 B7FAD et mettre 90,90,90,90,90 TaMaMBoLo/CC/SML/SNT