oceax
Messages postés16Date d'inscriptionmardi 22 juin 2004StatutMembreDernière intervention 4 juin 2008
-
22 juin 2004 à 12:03
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
22 juin 2004 à 20:23
Bonjour,
je suis débutant en c++ et n'y connais pas encore énormément gd chose...
Sur mon dernier programme (un keygen pr crack me que j'ai créé par mes soins) j'obtiens le message d'erreur suivant :
error : too many memory references for 'mov';
voici ma source :
#include <stdio.h>
#include
#include <string.h>
int main(int nNumberofArgs, char* pszArgs[])
{
int serial;
int longueur;
char szNom [20];
cout << "Salut je te souhaite la bienvenue dans ce Keygen";
cout <<"Ton nom stp :";
cin.getline (szNom, 20);
longueur = strlen (szNom);
asm
(
"start :"
"mov edi, byte [szNom]"
"xor edi,30"
"push edi"
"xor edi,20"
"mov serial,edi"
)
;
cout << serial;
return 0;
}
Voila si qqn peut m'aider je lui serait très reconnaissant
a bientot
Ben
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 juin 2004 à 20:23
movzx eax, byte ptr [szNom]
Emploie registres generaux (EAX, ECX et EDX) tant que faire se peut et EAX en priorite car c'est le plus rapide d'acces, les autres sont a sauvegarder en entree et a restaurer en sortie.
Que fait ce 'push edi' au milieu, je ne vois ni 'pop' ni aucun appel de fonction qui remontera ESP. Passera dans ton exemple car tu sors du prog juste derriere mais sur un prog important ce sera badaboum a tout coup.
Ne mettre de l'ASM que s'il y a un benef (perf ou taille code) mais pas quand tu obtiens exactement la meme chose avec du C, ce qui peut se faire dans ton exemple.