QUAKER
Exercice 1
PROG : Solsuite 98 V3.0 ---> PCMag n 27
Une compile de jeux de cartes de type solitaire .
Importante précision:
Lors d'une modif de code , il est impératif de noter la ligne de code qui suit celle que vous allez modifier . En effet si la ligne de code que vous avez modifiée est superieure ( ou inférieure ) en "taille mémoire" à celle d'origine , cela va entrainer obligatoirement un décalage de toutes les lignes suivantes du prog ce qui va conduire fatalement à un moment ou à un autre à un superbe plantage .Le nouveau code rentré doit être inférieur ou égal . Egal = parfait (rien d'autre à faire ) . Inférieur = rajout de NOP pour compenser la différence .
Petit exercice consistant à manipuler les sauts conditionnels .
Le but de cette exercice est , à partir d'un point donné " 4CEC1 " , d'arriver à la ligne ----------> " We thank you for your purchasing Solsuite " (ai-je besoin de traduire . . . ?) sans se faire éjecter car évidemment le sérial que vous aurez rentré est complétement bidon . Si vous avez bien appris vos leçons vous serez récompenser par une zoli boite qui vous dira ----> " We thank . . . et vous serez enregistré avec en plus l' avantage de n'avoir à faire aucune modif réelle dans le prog puisque celui-ci générera automatiquement un fichier Solsuite . cfl dans le répertoire Solsuite ( fichier d'enregistrement ) .
La mise en route :
Ouvrez W32dasm . 8.93
Attention aux paramètres : Sélectionner une font appropriée sinon l' écran risque d'être illisible . Disassembler options : Tout énable ; Supprimez Enable " command ligne on load " dans Debug ---> Debugger options
Ouvrez : Disassembler ----> Open file to disassemble --->Selectionnez Solsuite : exe dans le répertoire Solsuite -----> valider . . . le désassemblage commence .
Après avoir attendu un certain temps . . . vous devez avoir à l'écran une suite de lignes de code ASM -----> sauvegarder : Disassemble----> Save text file . . . Il sera sauvegardé un fichier texte de ce que vous avez sous les yeux (*. Alf ) et un fichier project (*. Wpj ) qu' il faudra ouvrir pour le debug .Voilà ca c'est la première fonction de W32dasm : le désassemblage .Profitez en pour visionner dans les REFS --->STING DATA REF , vous y verrez " We thank . . ." c'est de là que je suis parti pour cet exercice (mais il y a d'autres voies ) .Double cliquez dessus vous atterrirez directement sur la ligne de code qui débute cette routine ( enfin . . . presque ).
Maintenant ouvrez : Project---->Open Project File : vous devez voir le fichier précédemment sauvegardé " Solsuite.wpj " dans le répertoire que vous avez sélectionné .
Après avoir validé le fichier . Ouvrez Debug----> Load Process , le chargement s'effectue , vous verrez apparaître deux fenêtres . Pour l' instant une seule nous intéresse ; celle qui possède les commandes : RUN , Step Over , Step Into . . . etc . Arranger vous pour " sortir " au maximum la deuxième fenêtre qui dans notre exercice ne nous intéresse pas . Rétablissez la visu complète du code désassemblé . Bien , normalement vous êtes prêt .
Dans le menu général, ouvrez Goto----> Goto Code Location----> rentrer : 4ACEC1----> OK : ce qui vous amènera directement à cette ligne dans le listing code ASM .
Touche F2 qui posera un BPX dessus . (vous avez donc posé un point d'arrêt sur cette ligne de code et quand le prog passera par là , il stoppera net )
Cliquez sur la touche RUN dans la fenêtre : le prog démarre normalement .
Dans Solsuite , ouvrez : " ? "-----> Register -----> la boite de dialogue apparaît .
Rentrer ce que vous voulez -----> OK et . . . boum . . . le prog doit s 'arrêter-----> (notre BPX ) cliquez plusieurs fois sur l'icône Ursoft W32Dasm en bas de l'écran pour faire réapparaître le plan de travail W32dasm . Vous devez voir ce qui suit ( la fenêtre en plus ) .

Ca c'est le début de notre exercice : la ligne surlignée en jaune vert ; IL faut donc aller jusqu'à la DATA STRING REF : " We thank to your . . . " après vous ne vous préoccupez plus de rien : Le prog fera le reste .

L' arrivée : la ligne " 4AD032 " . Inutile de vous préciser qu'entre ces deux points se trouve une partie des routines de contrôle de validité du sérial que vous avez rentré . Le prog avec ses vérifs s'acharnera (comme un huissier de justice sur un mauvais payeur ) sur vous afin de vous remettre dans le droit chemin . . . ( This is a no valid Registration )
QUE LA FORCE SOIT AVEC TOI .
Pour forcer un saut---> le remplacer par JMP (saut inconditionnel ) ou par son "inverse " ex : JE ( saut si égalité ) par JNE ( saut si inégalité ) .
Pour ne pas " sauter " remplacez par un nombre de NOP correspondant ou son "inverse " .
Les commandes de W32dasm
Step over F8-->Vous tracez le prog ligne par ligne sans " entrer " dans les CALL .
Step into F7-->Vous tracez le prog ligne par ligne en " entrant " dans les CALL .
Auto step over F6-->Traçage automatique du prog sans entrer dans les CALL .
Auto step into F5-->Traçage automatique en entrant dans les CALL .
Run F9-->Démarrage normal du prog .
Patch Code : DANS LA FENÊTRE , quand vous serez sur la ligne de code à modifiée , Click dessus :
une fenêtre Patch apparaîtra--> elle doit contenir la ligne que vous voulez modifiée--> entrez votre nouveau code -->Enter--> elle " descend " d'un étage-->Click sur " Apply patch "
on vous demandera confirmation-->valider-->fermez la fenêtre Patch-->confirmation-->valider .
Continuez à tracer jusqu'à la nouvelle modif (il y en a plusieurs ) .