Anti-Reversers et Contre Mesures

Avant Propos:

Bien que ce ne soit pas très courant, vous avez sûrement déjà rencontré des programmes équipés d'Anti SoftIce, d'Anti Wdasm, d'Anti FPLoader ou d'Anti ProcDump.
On ne peut pas être intéressé par le Reverse Engeneering, que je distingue du Cracking, sans avoir envi de connaître comment fonctionnent ces contre mesures.

Les Anti-SoftIce


Sources

Auteurs

Liens et/ou DownLoad

Anti BPX (chap 1 et 2) _Duelist Chapitre 1 et Chapitre 2
NO MORE annoying anti SOFT-ICE The Owl Les Anti Sice
Anti anti-debugging tricks R!sc Anti SI sur l'INT 68
Ripping vbox out of paradise Alpine Protection Vbox avec anti SI
Vbox 4.2 A generic crack explained +Tsehp Protection Vbox avec Anti SI
Drapeau Noir n° 5 de TaMaMBoLo Christal Compressé, crypté + 2 Anti SI
Zip Studio Christal TeeJi Gnome Upx, Code Safe et Int 68
Armadillo 176 Cmos Lutter contre 3 Anti Sices
Cryptage et Anti SI Christal Alchemy laucher 1.0
Anti XXX et Multi compression/Cryption Dark-Angel
Pulsar
Drapeau Noir n°9
Drapeau Noir n°9
Les Anti Sice les plus courants Members of Assembly Synthèse sur les anti Sice
Encryption et Anti XXX Pulsar Solution au Crackme d'ElRaiser
Deep Paint 1.0c TeeJi Vbox 4.2
Compression ASPack et Anti XXX ByteCop SYSTEM-MECHANIC
Zip Studio 1.60 Groupe de Travail Anti XXX multiples
Les Except handlers Christal BlindRead
Crackme2 KeYsER Anti XXX multiples
evc-crackme f@t@lity UPX, anti XXX, cryptage
CoOlViPeR Crackme1 christal Anti ProcDump
Contributions Divers
Vbox 4.2 Koba Yashi Contribution
Point de vue G Fox Contribution
Détéction Meltice TeeJi Anti MeltIce
Ready made protection SV Import Table
Peshield 0.20 SV Import Sections
Peshield 0.20 SV Pe Header Imp
Anti-Sice Tricks Pulsar Les Anti-Sice + Zip
Les anti Dump el.CaRaCoL Comment planter ProcDump
Reverser Soft Ice Pulsar Comment cacher SoftIce + Zip

Les CheckSums et les CRC


Il faut bien distinguer les checksum, des CRC.

Le premier va additioner le poids des bits qui composent le programme, et vérifier que la somme obtenue est bien égale à une valeur qu'il aura conservé quelque part en mémoire (et souvent HardCoded). Suivant les cas, il peut y avoir moyen de "réctifier" le décallage que pourrait avoir provoqué vos modifications en rééquilibrant la somme des octets à un autre endroit. Vous pouvez aussi trouver la routine de calcul et mettre la main sur la valeur d'origine du checksum (éventuellement modifiable par un hexéditeur) ainsi que sur la nouvelle somme qu'aura votre programme après le patchage. Une dernière solution, et de shunter le blocage lié au checksum au niveau du message "File Corrupted".

Pour les Code de Redondance Cyclique , l'idée principale est de voir le fichier comme une grande série de bits divisées par un nombre, et qui vous laissera un Reste, le CRC! Utilisant un algorythme de calcul, le CRC est beaucoup plus délicat à contourner...

Dans ce dossier, vous trouverez trois parties:

Les Checksums

Les CRC

Les programmes

Ce rubrique a été créé à partir d'une compilation de textes du Groupe de Travail, et d'extraits de sites


CheckSum: Généralités


Cheksum: petite saloperie qui calcule le poids des octets composant les codes du programme.
Par exemple 5F en hexadécimal pèsera 95, et 5E pèsera 94. Donc si vous utilisez un éditeur héxa pour modifier l'exécutable, vous obtiendrez une boite "Intégrity Check Violation error" dès le lancement de celui-ci. Ceci dans le meilleur des cas, et dans le pire, le programme se contentera de cloturer l'application.


Comment cibler la routine de détection d'un Checksum corrompu

Certains programmes vérifient leur intégrité au démarrage et refusent de se lancer s'ils ont été "corrompus". Souvent cette protection est facile à retirer : bpx MessageBoxA si le soft affiche une messagebox pour signaler le problème ou tout simplement en traçant et en repérant le branchement qui fait quitter le programme. Néanmoins, il peut arriver que cette vérif soit bien faite et bien intégrée dans le programme (vérifs multiples et fonction de hachage pas évidente à repérer). C'est le cas des récentes versions de Windows Commander par exemple. Je me permets donc de vous fournir cette petite astuce : Il y a deux types de vérifs : celle qui vérifie l'intégrité en mémoire et celle qui vérifie l'intégrité du fichier exécutable. C'est pour cette dernière que l'astuce est utilisable : - Repérer dans le soft où celui-ci ouvre le fichier exécutable (bpx CreateFileA le permet très facilement). - Modifier le soft pour que celui-ci ouvre un autre fichier à la place (original.bak par exemple). - Et évidemment faite une copie du fichier exécutable non modifié (nommé original.bak dans l'exemple). Maintenant, le soft peut faire toutes les vérifs d'intégrité possible, aussi complexe soit-elle, vous ne serez plus embêté...
Remarque : cette astuce à l'avantage d'être applicable par un patch, puisqu'il suffit juste de copier l'original avant d'appliquer les modifications sur le fichier exécutable d'origine.
Brénuche