Assembleur pour crackers - v1.0

Ceci est une introduction trs basique  l'assembleur pour tous ceux qui 
n'avaient pas envie de comprendre toutes les astuces de leur ordinateur juste 
pour tre capable d'utiliser mIRC sans avoir  cliquer sur les ttes des autres. 
:)

Je commencerai par aborder les comnnaisssances les plus basiques dont vous aurez 
besoin avant que vous puissiez commencer  cracker. Je sais que que ce n'est pas 
un ordre trs logique, mais qu'est ce que vous voulez avoir, pour ce prix? ;))


LES REGISTRES
De manire simple; les registres sont les emplacements  pr dfaut o on stocke 
les donnes. Les seuls dont nous aurons  nous occuper sont: (E)AX, (E)BX, 
(E)CX, (E)DX
(Le (E) n'a une signification que lors du dbuggage d'un code 32 bits)

Ainsi que ces registres associs:
DS:SI: peut tre utilis comme source pour les opration de chanes
Es:DI: Utilis comme cible pour les oprations de chane

Comprendre parfaitement les registres n'est pas vraiment important pour e 
cracking, il est gnralement suffisant de savoit que ce sont les variables dans 
lesquelles sont stockes les donnes. :)


FLAGS

Ce sont essentiellement des registres dont les seules valeurs possibles sont 
vrai ou faux (cd 0 ou 1). Ils sont adresss par des commandes comme CMP, et 
sont utiliss pour dcider du rsultat d'un appel comme celui-ci:

CMP AX, BX	; Compare AX et BX, s'ils sont gaux, le flag zro est mis  1 
JZ  00124531	; Si le flag zero est  1, aller  l'adresse 001254531.

Pour comprendre cet exemple, vous aurez probablement  lire la suite, et  y 
revenir par la suite.


La Pile & Push/Pop

Avant d'effectuer n'importe quel appel de fonction, un programme doit placer les 
paramtres que cette fonction utilisera dans la pile. Imaginez cela comme un 
empilement de plaques, celle situe au sommet tant la prochaine  tre enleve 
- la pile fonctionne exactement comme ceci. Il est important de ne pas perdre de 
vue le principe de dernire " place / premire enleve " quand on effectue un 
appel, cela signifiant que les paramtres seront passs  la fonction dans 
l'ordre inverse de leur empilement. L'instruction PUSH ajoute une variable au 
sommet de la pile, alors que POP renvoie la variable situe au sommet de la 
pile.

Au cas ou cette explication ne serai pas claire, jetez un coup d'il  cet 
exemple :

La fonction API Windows GetDlgItemText attend les paramtres suivants:
(1) Handle of dialog box 
(2) Identifiant du contrle
(3) Adresse du tampon pour le texte
(4) Taille maximum de la chane

Ces paramtres seront passs de la manire suivante :

MOV EDI, ,[ESP+00000220]	;Get Handle of dialog box in EDI
PUSH 00000100			;PUSH (4), Taille max de la chane
PUSH 00406130			;PUSH (3) Adresse du tampon pour le texte
PUSH 00000405			;PUSH (2) Identifiant du contrle
PUSH EDI			;PUSH (1) Handle of Dialog Box
Call GetWindowText		;Appelle la fonction

Facile, non ? Ceci peut tre la manire la plus simple de cracker un numro de 
srie. Si vous connaissez l'adresse du tampon pour le n de srie, dans 
l'exemple 00406130, dviez  ce moment l la procdure sur celle qui gnre le 
vra srial.


AND

Utilisation : 	AND dest, srce
Effet :		Effectue l'opration logique ET entre les deux entrs, plaant 
le rsultat dans 'dest'.
Exemple :	AND BX, 03h

Il n'y a pas grand chose  dire sur cette instruction, elle est assez parlante.


CALL

Utilisation :	CALL Adresse
Effet :		Excute la fonction situe  l'adresse 'adresse'
Exemple :	CALL 10284312

Une fois que l'excution de la fonction situe  l'adresse 'adresse' est 
termine, le programme continuera  la ligne suivant l'appel.


CMP

Utilisation :	CMP dest, srce
But :			Soustrait la source a la destination, et met les flags a jour
Exemple :		CMP AX,03h

C'est une instruction trs importante dans la mesure o nous (crakers) sommes 
concerns. Quelque part dans le programme, CMP est utilise pour vrifier quelque 
chose, par exemple comparer le n de srie entr  celui attendu, ou pour 
vrifier qu'un programme est bien enregistr, etc.

Cette instruction va souvent prcder une instruction JUMP.


INT

Utilisation :	INT interrupt_number
But :			Appelle une fonction par dfaut (gnralement code dans le 
bios)
Exemple :		INT 10h

Vous ne verrez pas souvent cette commande en debuggant des programmes windows, 
mais elle est omniprsente dans les programmes DOS. Gnralement, les paramtres 
sont passs dans les registres par dfaut (AX, BX, CX, etc)

Il y a trop d'appels INT pour en faire la liste ici, mieux vaut se procurer une 
copie de la liste des interruptions.


JMP

Utilisation :	JMP Adresse
But :			C'est l'quivalent du bon vieux GOTO du basic. Il saute a une 
section de code
Exemple :		JMP 00402011

JMP est un saut inconditionnel  une section de code. Aussi simple que a.

Il existe des quantits de variations de cette instruction, les plus importantes 
tant :
	JZ - Saut si le flag zro est a 1. (quivalent  JE)
	JNZ - Saut si le flag zro est a 0. (quivalent  JNE)

Elles suivent gnralement une instruction CMP, ex :
	CMP RealSerial, BadSerial 	; compare le vrai num de serie au notre
	JNE Go AwayBadCracker		; S'ils sont diffrents, alors on sort


MOV

Utilisation :	MOV dest, src
But :			Copie la valeur d'un mot ou d'un octet de la source a la 
destination
Exemple :		MOVE AX, DX

Vous verrez trs souvent cette instruction quand vous parcourrez du code. Sa 
signification est en gros (pour parler en BASIC) : LET dest = src

Il existe une quantit de variantes utilisant MOVSX, mais l'effet est  peu prs 
identique. Leur importance est donc limite...

Contentez vous de comprendre celle l, et ca sera suffisant


OR

Utilisation :	OR dest, srce
But :			Effectue un OU logique entre dest et srce, et place le 
rsultat dans dest
Exemple :		OR DX, AX

C'est assez parlant, non ?


RET

Utilisation :	RET
But :			Repartir d'une fonction...
Exemple :		RET

Vous verrez gnralement cette instruction  la fin d'une fonction, et cela 
donne l'ordre au CPU de retourner au point o une fonction a t appele.



Conseils utiles :

Le manuel de prog des CPU intel : www.intel.com
La liste des interruptions de Ralph Browns : cherchez la...
Manuel de rfrence des programmeurs win32 : Fourni avec n'importe quel langage 
de type VISUAL

Autant que je sache, c'est tout ce dont vous avez besoin pour vraiment commencer 
 cracker. La plupart du temps, les instructions parlent d'elle mmes, mais si 
vous avez besoin d'un coup de main, email Corn02@hotmail.com ou connectez vous 
sur #cracking4newbies sur efnet, o vous trouverez srement quelqu'un pour vous 
aider. Toutes les ides et suggestions sont bien entendu les bienvenues...

--c, traduit par Katana