logo

Knowledge Is Power

 
 

- Reinit des nouveaux posts -

- Recherche -

Messages Privés - Derniers posts
S'enregistrer - Login - Liste des membres
Vous logger : Login Pass

Reverse Engineering >> help routine asm Newtopic | Reply
poster txt
||CyrUS||
Inscrit le 19-01-2006
Posté le 11-03-2006 13:10

Salut pourriez vous me dire ce qui ne vas pas dans mon code?
il doit apliquer un petit cryptage a la chaine de caracteres name et mettre le resultat dans serial

mov eax,name
mov ebx, name
xor ecx,ecx

loop1: mov al,byte ptr name
rol al,2
add al,32
xor al,15
xor al,16
rol al,2
add al,32
xor al,15
xor al,16
mov al,byte ptr serial

add ecx,1
cmp ebx,ecx
jnz loop1
invoke MessageBox,HWND_DESKTOP,serial,serial,MB_OK

je crois que le probleme c'est que ebx n'a pas de cette facon le nombre de bytes du name.
profil | edit | quote
Aegis
Inscrit le 19-05-2003
Avatar
Posté le 11-03-2006 18:20

Salut

A première vue, il y a trois problèmes dans ton algo.
Si j'ai bien compris, tu veux faire une simple boucle qui crypte chaque byte d'un mot un par un et qui recrache le byte crypté successivement dans serial ?

- Premier souci chez toi : tu as bien une boucle (loop) mais infinie puisque le byte mis dans al sera toujours le même.
- Deuxième souci : à la fin tu fais

mov al, byte ptr serial

Si tu veux stocker dans serial, c'est l'inverse qu'il faut faire

- Troisième souci : incrémenter ecx ne sert à rien car ebx contient non pas le nombre de caractères du nom mais l'adresse du buffer name

Je te propose une solution toute conne ci-dessous :
Code:

xor ecx, ecx

loop:
mov al, byte ptr [name+ecx]
cmp al, 0 ; on teste si c'est une fin de string
jz fin ; si oui, on sort de la boucle
rol al, 2
add al, 32
xor al, 15
xor al, 16
rol al, 2
add al, 32
xor al, 15
xor al, 16
mov byte ptr [serial+ecx], al ; on stocke le byte dans serial
inc ecx ; on incrémente l'index dans le buffer
jmp loop ; on loop

fin: ; on affiche le serial
invoke MessageBox,HWND_DESKTOP,serial,serial,MB_OK



Ceci dit, je n'ai pas testé l'algo de cryptage, et je ne sais pas si à terme tu obtiens des caractères imprimables.
Si les caractères ne sont pas imprimables tu pourras toujours utiliser un wsprintf pour formater ta chaîne obtenue et l'afficher en hexa dans ta messagebox par exemple

Ah oui, autre chose : si les valeurs utilisées dans les additions, xor, et rol sont des valeurs hexa et non des valeurs décimales, pense à rajouter un "h" juste derrière sinon tu vas avoir des surprises


_________________________


[ Ce Message a été édité par: Aegis le 2006-03-11 18:46 ]
profil | mail | Website | edit | quote
||CyrUS||
Inscrit le 19-01-2006
Posté le 11-03-2006 23:44

Salut, merci beaucoup pour ta reponse mais kand je compile ac fasm, le prog fait un access violation.

je cois que je vais me mettre a masm.
profil | edit | quote
||CyrUS||
Inscrit le 19-01-2006
Posté le 14-03-2006 18:28

C'ent bon j trouver!! ^^


invoke GetDlgItemText,[hwnddlg],IDC_EDIT1,name,50
mov ecx,eax
mov byte[serial + ecx], 00h ;;make sure the null is at the end
mov ebx,ecx
dec ecx
loop1:
mov al,byte [name + ecx] ;algo
rol al,2h
add al,32h
xor al,15h
xor al,16h

rol al,2h
add al,32h
xor al,15h
xor al,16h
mov byte [serial + ecx], al
dec ecx
jns loop1
profil | edit | quote
mimas_
Inscrit le 20-01-2006
Avatar
Posté le 17-03-2006 14:23

Tu peux aussi t'arranger autrement

Code:

invoke GetDlgItemText,[hwnddlg],IDC_EDIT1,name,50
mov edi, serial
mov esi, name
@@:
lodsb
test al,al
je @f
rol al,2h
add al,32h
xor al,15h
xor al,16h

rol al,2h
add al,32h
xor al,15h
xor al,16h
stosb
jmp @b
@@:


Je ne comprends pas l'utilité de mettre 0 à la fin de ta chaîne puisque GetDlgItemTextA le fait.

Il y a ausi une simplification à faire au niveau des couples xor, j'imagine que tu sais pourquoi.

PS: n'oublie pas de sauvegarder et restaurer edi et esi dans ce cas.
profil | Website | edit | quote
Newtopic | Reply

Online : Agustinbluts, Agustinwhase, LaresEi, Neldaneose, ovuhuqudegufi, OwenEi, Ricardobut, Ricardotop, RobertErark, VandornCite et 89 Guests


Retour Index NewFFR Repository : http://taz.newffr.com
Cagades à Stick : http://alcane.newffr.com
Forum HTML et Archive -> ici
ForumFR Sql/Xml (2006/04) (SF pas à jour du tout...) - Alive since 2001 Newffr.com
Pour toute plainte ou problème -> Contacter Borax, Hyatus, Tweakie ou Stick par message privé (ou Gueulez sur le forum :) )
Retour haut de page