888 ,e, e88'888 888,8, ,"Y88b e88'888 888 ee " 888 8e e88 888 d888 '8 888 " "8" 888 d888 '8 888 P 888 888 88b d888 888 Y888 , 888 ,ee 888 Y888 , 888 b 888 888 888 Y888 888 "88,e8' 888 "88 888 "88,e8' 888 8b 888 888 888 "88 888 , 88P "8",P" ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Programme : FireHand Ember v3.0.7 Protection: Numero de Serie Ecrit par : LuCiFuGe RoFoCaLe [STYX] Type de Crack: REG + Patch Date : 12/1997 Niveau: Debutant Confirme ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Introduction: ÄÄÄÄÄÄÄÄÄÄÄÄÄ Ce shareware possede plusieurs petites astuces qui seront tres bien a etudier dans notre petite initiation au crack. Je vais distribuer ce soft avec mon tutorial mais si vous ne l'avez pas regarder sur: http://www.firehand.com ou PC TEAM CD PRO numero 30 Phase D'approche: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ a) on voit dans le premier nag screen, un compteur de lancement. b) il y a une possibilite de s'enregistrer par un numero de serie :) Nous allons laisser tomber le compteur de lancement, qui etant limite a 35 devrait etre nettement suffisant pour notre crack. Donc on va essayer la methode habituelle pour les numeros de serie: Je pose un BPX hmemcpy, je clique deux fois sur F5 (une fois pour la copie du nom et une fois pour le numero de serie), je trace comme un fou avec F10 pour me retrouver devant: 409F90: LEA EDX,[ESP+C] <- mon mauvais code LEA EAX,[ESP+20] PUSH EDX PUSH EAX MOV DWORD PTR[ESP+28],B300FEA1 CALL 4138D6 <-- Premier CALL a etudier MOV EDI,EAX CMP EDI,-1 MOV [ESI+34],EDI JNZ 409FB5 XOR EAX,EAX JMP 409FE2 <- "Mauvaise Boite" 409FB5: TEST ESI,ESI JZ 409FD6 CMP BYTE PTR[ESI],0 JZ 409FD6 LEA ECX,[ESP+20] PUSH ESI PUSH ECX CALL 41389A <- Deuxieme CALL a etudier LEA EDX,[ESP+20] PUSH EAX PUSH EDX CALL 413894 <- Troisieme CALL a etudier JMP 409FD9 409FD9: OR EAX,-1 XOR ECX,ECX CMP EAX,EDI SETZ CL MOV EAX,ECX 409FE2: TEST EAX,EAX JNZ 40A002 PUSH 41B8B4 PUSH EBX CALL 41382E <- Affiche la "Mauvaise Boite" ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Etude du premier CALL: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ 4138D6: JMP E0091B0 <- Appel a une routine de Fireutil.dll E0091B0:SUB ESP,C PUSH ESI MOV ESI,[ESP+8] PUSH ESI E0091B9:CALL [E001E44C] CMP EAX,C <- mon Code doit contenir 12 chiffres JZ E0091CE <- si pas assez de chiffres alors pas de saut OR EAX,-1 <- et mettre -1 dans EAX POP ESI ADD ESP,C RET 8 E0091CE:MOV EAX,ESI <- contient notre mauvais code ADD ESI,4 PUSH ESI MOV CX,[EAX] MOV [ESP+8],CX MOV DL,[EAX+2] LEA EAX,[ESP+B] PUSH EAX MOV [ESP+E],DL CALL [E00BED0] E0091FD:TEST EAX,EAX JNZ E00920B <- 12 chiffres donc le Code alors jump OR EAX,-1 POP ESI ADD ESP,C RET 8 E00920B:MOV EAX,[ESP+18] <- EAX contient une cle calculee avec notre code POP ESI ADD ESP,C RET 8 Donc comme vous pouvez le voir une cle est calculee avec notre mauvais code, celle-ci servira sans doute apres. Pour moi la cle-code = cccb44a ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Etude du deuxieme CALL: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ CALL 41389A -> Sur JMP E009222 Routine de FireUtil.dll E009222:MOV EBP,[ESP+10] PUSH ESI PUSH EDI PUSH EBP XOR EDI,EDI CALL E01E44C MOV EBX,EAX XOR ESI,ESI TEST EBX,EBX E009237:JLE E009254 E009239:MOVSX EAX,BYTE PTR[EBP+ESI] PUSH EAX E00923E:CALL E00CEC0 LEA ECX,[EDI+ESI+1] ADD ESP,4 IMUL EAX,ECX ADD EDI,EAX INC ESI CMP ESI,EBX -> ESI=1 EBX=8 la premiere fois JL E009239 MOV EAX,EDI ... RET 8 Cette routine calcule, elle aussi une cle. ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Etude du troisieme CALL: ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Appel encore d'une routine de FireUtil.dll E009260:MOV EAX,[ESP+4] MOV ECX,[ESP+8] MOV EAX,[EAX] XOR EAX,ECX JGE E09270 NEG EAX E009270:RET 8 dans XOR EAX,ECX on se sert de nos deux cles precedement calculees pour constituer la cle finale :) pour moi c'est 4F24940F a mettre dans la base de registre. Mais essayons de faire un patch pour ce soft.. Phase Finale: ÄÄÄÄÄÄÄÄÄÄÄÄÄ On obtient donc comme schema de protect: 409F90: LEA EDX,[ESP+C] <- mon mauvais code LEA EAX,[ESP+20] PUSH EDX PUSH EAX MOV DWORD PTR[ESP+28],B300FEA1 CALL 4138D6 <-- Calcul la premiere cle MOV EDI,EAX CMP EDI,-1 MOV [ESI+34],EDI JNZ 409FB5 XOR EAX,EAX JMP 409FE2 <- "Mauvaise Boite" 409FB5: TEST ESI,ESI JZ 409FD6 CMP BYTE PTR[ESI],0 JZ 409FD6 LEA ECX,[ESP+20] PUSH ESI PUSH ECX CALL 41389A <- Calcul de la deuxieme cle LEA EDX,[ESP+20] PUSH EAX PUSH EDX CALL 413894 <- Calcul du code final (EAX) JMP 409FD9 409FD9: OR EAX,-1 XOR ECX,ECX CMP EAX,EDI <- Compare le bon code et la premiere cle SETZ CL MOV EAX,ECX 409FE2: TEST EAX,EAX JNZ 40A002 PUSH 41B8B4 PUSH EBX CALL 41382E <- Affiche la "Mauvaise Boite" Essayer de mettre la valeur de EDI dans EAX a la sortie du CALL 413894, et presser F5....Le soft vous indique que votre code est juste :) Donc vous faites les modifications dans l'exe et hop vous relancez.... Merde cela ne marche pas "Invalid Key". Essayons de comprendre pourquoi, le soft a modifie dans la base de registre User="" par User="Lucifuge" et Key=0 par Key=CCCB44Ah. Ben voila notre probleme, c'est le mauvais code qui est mis dans la base de registre; donc effacons les valeurs dans key et user de la base de registre, et relancons notre soft. Cette fois copier EAX dans EDI, Idem dans la base de registre !!!! Donc il y a une copie du mauvais code qui se ballade en memoire: 409F90: LEA EDX,[ESP+C] <- mon mauvais code LEA EAX,[ESP+20] PUSH EDX PUSH EAX MOV DWORD PTR[ESP+28],B300FEA1 CALL 4138D6 <-- Calcul la premiere cle MOV EDI,EAX CMP EDI,-1 MOV [ESI+34],EDI <- Stocke la cle calculee en 4138D6 pour le REG JNZ 409FB5 XOR EAX,EAX JMP 409FE2 <- "Mauvaise Boite" Ben vi, c'est tout simplement en [ESI+34] que le code qui sert pour la base de registre est copie. Donc je vais regarder ou je peux le recuperer... Il y a dans la DLL, mais il faut savoir que celle ci a un checksum donc plus de travail, je vais plustot chercher dans l'exe. PUSH EDX CALL 413894 <- Troisieme CALL JMP 409FD9 409FD9: OR EAX,-1 XOR ECX,ECX CMP EAX,EDI SETZ CL MOV EAX,ECX 409FE2: TEST EAX,EAX JNZ 40A002 PUSH 41B8B4 PUSH EBX CALL 41382E PUSH EDX CALL 413894 JMP 409FE6 409FD9: OR EAX,-1 XOR ECX,ECX CMP EAX,EDI SETZ CL MOV EAX,ECX TEST EAX,EAX JNZ 40A002 409FE6: MOV EDI,EAX MOV [ESI+34],EAX JMP 409FD9 Cela fait bcp de changement mais cela fonctionne et c'est bien le principal. Pour le Patch: Offset: 93D4 = EB 10 Offset: 93E6 = 8B F8 89 46 34 EB EC Et n'oubliez pas de mettre 12 chiffres au code pour l'enregistrement Pour le Reg: dans HKEY_LOCAL_MACHINE\SOFTWARE\Firehand Technologies\Ember\ Mettre user: Lucifuge Rofocale [STYX] key: 0C925633 ou user: Lucifuge key: 4F24940F ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Voila c'est enfin fini !!! LuCiFuGe RoFoCaLe [STYX] 1997