******************************************************************************
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{  Hard Patching  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
******************************************************************************


Si vous etes très newbies passez votre chemin. Les newbies peuvent rester car meme moi, j'ai réussi a le faire. Mais c'est assez compliqué a expliquer.

pour illustrer ce tut on prendra le crackme Dark-Angel (c'est pas grave si vous l'avez pas).
je ne détaillerais pas le crack juste le hard patching.
Le hard patching c'est le fait qu'un prog s'autopatche en s'executant. Pour le crackme Dark-Ange on fait ça car son prog est crypté. Il n'est donc patchable qu'en mémoire.

voila comment on procède :
le code était :


   jmp ->crypté


il donne :


   jmp patch

patch :

   modification de la memoire
   jmp ->crypté 


Apres avoir trouve comment fonctionne le crackme on voit qu'on doit mettre en 00401026 un jmp a la place du jnz pour le premier test anti softice.

* soit ce qui donne en asm :
MOV BYTE PTR [00401026],EB

* y faut donc convertir ca en hexa :
C60526104000EB

* et on l'integre direct dans le prog a un endroit non crypté :

pour ca on cherche un espace vide non crypte. Cool a l'offset F00 il y a des 00 et ce sera pas crypté. On va donc remplacer l'endroit ou le prog passe la main a la partie cryptée (FFE0 a l'offset 12A4 : vous le trouvez en débugguant avec wdasm le peu de code qu'autorise le désassemblage) par un jmp sur notre espace vide.

notre espace est a l'adresse 00404100
       //voir ps


donc notre jump devient :

 jmp 00404100        =       E957DEFFFF      //voie ps 2


donc on va a 12a4 et on marque : E957DEFFFF
On est obligé d'écraser 5A595B

puis pour la modif de la memoire a F00 et on marque :

5A595BC60526104000EBFFE0
(FFE0 est le jump qui envoie sur la parie crypté)

(on a pas oublié de réécrire ce qu'on a écrasé)
lol ca marche.
reste pu qu'a faire pareil pour les autres anti-si et ca donne en F00 :
5A595BC60526104000EBC0539104000EBC054C104000EBC60560104000EBFFE0


soit en asm :

pop edx
pop ecx
pop ebx
mov byte ptr [00401026], EB
mov byte ptr [00401039], EB
mov byte ptr [0040104C], EB
mov byte ptr [00401060], EB
jmp eax



ps :pour trouver l'adresse j'ai pas trouvé mieux que de fouiller dans la mémoire avec SI grace aux flèche haut et bas quand on est dans le prog désiré après avoir placé un truc en hexa pour le repérer. (sinon comptez les octets)

ps2 : pour trouver la correspondance en hexa d'un jmp a une adresse placez vous sous SI a l'endroit ou vous voulez mettre ce jmp. Puis tapez :
a "adresse ou vous etes"
puis :
jmp "adresse ou vous voulez aller"
puis esc

ensuite vous regardez l'hexa qui a été généré.
(sinon comptez les octets mais vous allez vous faire chier)

voila c'est mon premier hardpatch donc j'ai peut etre pas été très clair. Je reviendrais la dessus si Dark-Angel fait un autre crackme :)

Je remercie beaucoup christal car sans ses tuts j'étais dans la merde.
Ainsi que Dark-Angel : ton crackme m'a fait apprendre plein de trucs.(merci pour icedump) Sans oublier jufox, RD, MrPhilex, Dwrc, Osmose, TaMaMBolo (pour ces drapeaux noirs).
ET TOUT FCF EN GENERAL ainsi que la scene Francaise (allez on se bouge le cul)


TiPiaX / French Cracking Force