Un p'tit click sur mon sponsor SVP.
Ouvrir
"Disassembler"
Dans
"Disassembler Options"-->cochez :Enable JUMP CONDITIONAL ,JUMP INCONDITIONNAL
+ CALL (X référence)--> Ces choix sont fait pour afficher
ou non les CALL et JUMP qui ont appelés les routines qui suivent
.
![]()
Idem
pour 0001:0A64 avec le CALL à l'adresse 0001:0A64--> "Referenced
by a Call..."
Donc très important (pour suivre dans le
listing désassemblé le déroulement du prog ou les
eventuels chemins qu'il pourrait prendre)
Si
vous ne voyez que des caractères illisibles il est nécessaire
de "régler" les "Fonts"
Evidement
il faut le sauvegarder-->Save Disassembly Text File and Créate Project
File
Il
sera crée un fichier du prog désassemblé avex l' extention
ALF dans un répertoire nommé Wpjfiles qui vous pourrez lire
avec un éditeur texte quelconque et un fichier projet avec l'extention
WPJ qui vous sera nécessaire pour lancer le debugger (aussi présent
dans le rép Wpjfiles).
LES
MENUS
SEARCH
-->FIND TEXT : Utile pour la recherche de suite de caractères de
toutes sortes.
GOTO
:
Goto
code start-->Aller à la première ligne du code désassemblé
(CtrlS)
Goto
program entry point-->Aller à la première ligne du démarrage
du prog.(F10)
Goto
page-->Aller à la page désirée (toutes les indications
se trouvent en bas de l'écran lors de vos déplacements dans
le prog).(F11)
Goto
code location-->Allez à l'adresse mémoire désirée.(En
32 bits : adresse Code offset) (En 16 bits : Code segment + Code offset)
(ShiftF12)
EXECUTE
TEXT.
Lors
d'une étude du prog avec le listing désassemblé ,
quand vous vous trouvez sur un CALL ou un JUMP (surlignement en jaune vert)
: vous pouvez simuler le saut ou le CALL en cliquant sur "EXECUTE JUMP"
ou "EXECUTE CALL" vous irez automatiquement à l'adresse indiquée.
De plus vous pouvez revenir en arrière avec les commandes "Return
from...".
Functions.
Les
imports-->Vous avez ici tous les fichiers extérieurs donc le prog
a besoin pour tourner (qu'il importe) essentiellement les API de Windoz69
(affichés en bleu dans le listing): très utiles----->vous
pouvez aussi poser des BPX dessus . Visionnez les pour chaque prog : elles
pourront vous être très utiles si vous voulez debugger avec
SOFTICE .
Les
exports--Vous avez ici tous les fichiers à qui le prog envoie (exporte)
des infos.
HEX
DATA.
La
représentation du prog en Hexadécimal
REFS
.
Menu
réferences-->Affichage des menus du prog.
Dialog
références-->Affichage des Dialogues du prog.
String
data références -->Affichage des commentaires concernant
déroulement du prog. Toutes les chaines de caractères (entre
autres : le texte des boites dialogues) et repères posés
par le créateur du prog pour s'y retrouver et qui nous sont bien
utiles.Et c'est avec ces repères que W32dasm est génial .Le
principe est de relever tous les contenus des boites dialogue lors du déroulement
normal du prog (ex: Votre période d'évaluation est terminée
; Veuillez vous enregistrer . . .etc ) et ensuite de trouver dans ces"
String Dat ..." les mêmes phrases ou tout du moins ce qui se rapproche
afin de se retrouver dans la routine qui crée ces boites de dialogue.
Le
fait de double cliquer sur une ligne quelconque vous amène directement
sur la ligne concernée dans le listing (vérifier si il y
en a plusieurs).Je précise que certain de ces menus peuvent être
absents suivant le type de prog.
Ouvrir
Debug-->Debugger Options-->Ne laissez activez (pour l'instant)"Debug only
this process" et "Display program génerated exeptions".
LE DESASSEMBLAGE
Ouvrir
"Disassemble"--->"Open File To Disassemble"---> sélectionnez votre
prog...
Double click dessus ou "Ouvrir".
Le processus de désassemblage commence
Si vous voyez en bas le désassemblage s'effectuer ligne par ligne :c'est vraisemblablement un prog 16 bits--->W32dsm pourra donc seulement le désassembler mais pas le debugger.
Par contre si vous voyez la procédure s'effectuer : "Pré processing . . .Procéssing Call . . .Procéssing Jmp . . .Disassemble . . .--->Prog 32 bits + debugging possible (suivant la taille du prog : cela peut être long ).
Vous voyez apparaître le listing du prog.
Déjà avec les "string data ref", vous pouvez essayé
de situer quelques routines importantes suivant le but que vous recherchez
.
Ouvrir "Goto"---->" Goto Program Entry Point"--->vous arrivez à
la ligne de début du prog.
Ici à ce niveau vous pouvez ,si vous êtes un pro de l'assembleur
( que je ne suis pas ), tracer le prog (avec les flêches clavier
haut et bas) manuellement : Méthode du " Dead Listing ". Heureusement
il ya le debugging . . .
LE DEBUGGING
Si vous voulez debugger un prog désassemblé que vous avez
déjà enregistré :
Ouvrir "Project"-->"Open Project File"-->vous devez voir "votre prog .wpj"
Double Click dessus.
Ouvrir "Debug"--->"Load Process"
La fenêtre du prog désassemblé se ferme ; deux fenêtres
s'ouvrent : la fenêtre du traçage et la fenêtre qui
affiche les " informations ,données ,paramètres ...etc "
qui passent par les registres du microprocesseur .
La fenêtre de traçage.

AutoStep
Into (F5)-->Traçage automatique en entrant dans les Call.
AutoStep Over (F6)-->Traçage automatique en ne rentrant pas dans
les Call.
Step Into (F7)-->Traçage ligne par ligne en entrant dans les Call.
Step Over (F8)-->Traçage ligne par ligne en rentrant pas dans les
Call.
Pause-->Arrêt du traçage (utile pour stopper les traçage
Auto...).
Vous constaterez que quand vous tracez ligne par ligne (ou en "auto") les
lignes parcourues dans le listing deviennent rouges ce qui pourra vous
être très utiles.
Run (F9)-->Lancement normal du prog (toujours sous le contrôle de
Wdsm) .Les modifs que vous aurez effectuées seront pris en compte
ainsi que les BPX.(mais pas réellement dans le prog).
Goto Adresse-->Allez directement à une adresse désirée.
La pose de BPX (break point) s'effectue avec la touche F2(apparition d'
un petit carré jaune sur la gauche de la ligne concernée
dans le listing et d'une étoile dans la fenêtre de traçage
).
Patch Code-->Ouverture d'une fenêtre pour modifier fictivement une
instruction.
Modif d'instruction dans la fenêtre "PATCH CODE"'
EIP-->L'adresse oû vous êtes et son instruction.
Notez en visionnant dans la fenêtre traçage l'adresse de l'instruction
suivante.
Enter
New Instruction Below-->Entrez votre nouvelle instruction-->Enter.
Un
message d'erreur s'affichera si le nouveau code n'est pas valide.
Votre
nouvelle instruction apparaîtra dans la grande fenêtre en dessous
(en ASM et Hexa).
L'adresse
suivante (et l'instruction) dans EIP apparaît-->Important : il y
a de fortes chances pour que la nouvelle instruction que vous avez rentrée
n'ait pas la même taille mémoire que celle que vous avez remplacée
. Vous devez impérativement compenser par des NOP si elle est inférieure
afin de retrouver la même instruction suivante .Ne pas mettre d'instruction
de taille supérieure. Et évidement si égale : OK .
Notez
le code Hexa.(Cela vous servira pour la vrai modif sous éditeur
HEXA)
Continuez
vos modifs si vous avez d'autres lignes à modifier. Elles s'incrémenterons
au fur et à mesure dans la grande fenêtre.
Clear
Patch-->Effacer toutes vos modifs.(revenir à l'état initial).
Remove
Last Line-->Effacer la dernière ligne entrée.
Apply
Patch-->Appliquer vos modifs (+ confirmation).
Close-->Fermeture
de la fenêtre (+ confirmation).
( FIN DU PATCH.)
Terminate-->Arrêt du debuggeur (passe à "Close" quand le prog
est arrêté ).
La fenêtre contenu des registres.

Au
centre vous voyez tous ce qui "passent" par les registres du processeur
: "Source for Data Disp 1",(EAX,EBX,ECX,EDX,ESI,EDI,EBP et EIP étant
l'adresse mémoire où vous êtes). Ainsi que dans la
case en haut à gauche.Vous les verrez évolué au fur
et à mesure du traçage.
Donc
à visionner aux moments importants du traçage notamment lors
de comparaison.
Une
calculette pour les conversions Hex:Dec est utile (présente comme
utilitaire dans Hworks32) .
Vous
avez aussi la touche "Oper" (presque en bas sur la gauche) qui quand elle
est activée vous indique le contenu des opérandes : important
, par exemple, pour savoir si les sauts conditionnels vont être effectués
ou pas.
Les
deux lignes du bas vous indiquent l'état du processus.(Dans ce cas
de figure : "Non Fatal Access Violation " = Planté ...
La
case "Bpts" vous rappelle les BPX que vous avez posés. "Clear" pour
les supprimer.
En
dessous "Actives Dlls": les DLL actives pendant le déroulement du
prog.