|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Access violation et ecriture de variable [ Archives / Newbii ] (anthraxx)
Informations & options pour cette discussion
|
dimanche 17 août 2003 à 14:00:12 |
Access violation et ecriture de variable

anthraxx
|
J'ai une question qui me traKsse avec MASM: quand je declare un tampon comme cela: buffer db 100 dup(0)et dans le code, j'essaye d'ecrire dedans, avec une fonction comme strcpy ou instruction du type mov byte ptr [buffer],ahou bien n'importe quelle fonction ou instruction qui ecrit dans une variable, eh bien j'obtiens un sympatique message de Windows 2000 me disant que "Access violation". Es-ce normal? Seul windows2000 (et eventuellement NT) est-il sujet a cette limitation? Ou bien tout simplement C moi ki sait pas faire? Voila si quelqu'un peut m'aider j'en serais heureux
|
|
|
|
dimanche 17 août 2003 à 15:41:26 |
Re : Access violation et ecriture de variable

Chrishka
|
Je ne vois pas d'erreur dans ton code, en fait, je pense que tu as déclaré ton buffer dans le segment de code. Sous windows tu n'as pas le droit d'écrire dans un segment de code. Déclare plutôt ton buffer dans un autre segment, genre .data Si c'est pas ça je vois pas de raisons pour qu'il y ait une violation d'acces
|
|
|
|
dimanche 17 août 2003 à 15:52:58 |
Re : Access violation et ecriture de variable

anthraxx
|
Bien sur! Oui c'est bien dans mon genre de chercher des raisons compliquées alors que la solution est juste devant moi, tellement simple que je n'y ai meme pas fait attention!
Merci beaucoup, en effet, en declarant le truc dans .data ça marche bcp mieux!
Mais a propos, il n'y a AUCUN moyen sous Windows donc, de faire un programme qui ecrit dans son propre code? C'est nul, ça! J'avais deja pensé a faire un programme genre IA qui se change tout seul, mais sa va etre + compliqué que prévu apparemment...
|
|
|
|
dimanche 17 août 2003 à 16:57:34 |
Re : Access violation et ecriture de variable

Chrishka
|
Je t'en prie content de t'avoir aidé.
Effectivement c'est pas évident de faire du self-modifying code sous windows. C'est pas impossible, tu peux changer les permissions d'acces d'une zone mémoire avec la fonction VirtualProtect, mais personnellement j'ai jamais essayé.
|
|
|
|
dimanche 17 août 2003 à 18:21:03 |
Re : Access violation et ecriture de variable

BruNews
|
Aucun probleme pour ecrire sur ton code comme sur celui d'un autre processus. Va voir dans MDN: OpenProcess(...), WriteProcessMemory(...). BruNews, ciao...
------------------------------- Réponse au message : -------------------------------
> Bien sur! > Oui c'est bien dans mon genre de chercher des raisons compliquées alors que la solution est juste devant moi, tellement simple que je n'y ai meme pas fait attention! > > Merci beaucoup, en effet, en declarant le truc dans .data ça marche bcp mieux! > > Mais a propos, il n'y a AUCUN moyen sous Windows donc, de faire un programme qui ecrit dans son propre code? C'est nul, ça! J'avais deja pensé a faire un programme genre IA qui se change tout seul, mais sa va etre + compliqué que prévu apparemment...
|
|
|
|
dimanche 17 août 2003 à 20:47:19 |
Re : Access violation et ecriture de variable

anthraxx
|
OK merci tt le monde
Mais ya un truc d'ordre general que je voudrais savoir: quand je place une variable apres .data, et que j'utilise un debugger et que je regarde à l'adresse de cette variable, je me trouve face à un bloc de 4096 octets initialisés à 0, ou je peux librement ecrire;
Cette memoire est-elle la celebre memoire du "data segment"? (non, j'ai pas fait assez de theorie) et si oui, c'est bizarre, on m'avait dit que dans le "flat memory mode", les donnees et le code etaient dans le meme segment. Or je ne peux pas ecrire sur mon code directement.
Et enfin, es-ce qu'on peut (facilement) augmenter cet espace?
Voili voilou, renseignez-moi merci!
|
|
|
|
mardi 19 août 2003 à 01:55:21 |
Re : Access violation et ecriture de variable

PierreF
|
La raison de pourquoi tu a un bloque de 4096 octet initialiser a zero, c'est parsque la mémoire et couper en bloque de 4 Ko . La raison de c'est bloque c'est pour la pagination (c'est ce qui permet a un programme d'avoir un morceau de donner au millieu de la mémoire et la suite à la fin de la mémoire (par exemples), il que le programme voit les donnée comme si elle était continue)
"flat memory mode" tu a un segment qui donner le code et un qui donnée les donnée, mais tout deux peuvent pointer la même zone de mémoire. Tu a un segment dans CS et un dans DS. Ils peuvent être identique (sauf que celui de CS est un segment de code et celui de DS un segment de donnée, car en mode protégée ils sont distinc).
Pour augmenter l'espace des donnée tu fait un buffer db 4097
au plus proprement buffer db <La taille dont tu a besoin>
A+ (j'espére avoit été assez clair)
|
|
|
Cette discussion est classé dans : buffer, access, variable, ecriture, violation
Répondre à ce message
Sujets en rapport avec ce message
masm32 buf variable [ par skotmarud ]
bonsoir,j'ai un probleme pour créer un buffer à taille variable pourtant je suis tombé sur ce post : http://www.asmfr.com/infomsg_MASM32-COMENT-DECLAR
Probleme de linkage sur tlink32 [ par Sn00bino_roi_du_petrol ]
Je fais un programme qui examine le header des EXE windows, le resultat est inscrit sur un fichier txt. Les APIS utilisés sont déclaré ainsi :extrn Ex
ajout d'une variable dans un exe [ par tezca_system ]
Sans avoir lu encore toutes mes docs (vos bouts de codes et les liens de vos sites), je me pose une question. Est il possible d'integerer une variable
[NASM-Linux] Problème de buffer [ par yann2192 ]
Bonjour à tous, je me suis lancé dans l'assembleur 32bits avec les appels linux et j'ai un problème.Je récupére le chemin d'un fichier entrer par l'us
débutant qui a un prob avec l'int21h [ par sibi12 ]
salut voivi mon code : mov ah, 09h mov dx, offset buffer int 21hbuffer a été déclaré comme ca: buffer db 50 dup(0)le compilateur me met
prob mode protégé pour graphisme [ par prunkdump ]
Bonjours afin de testé un de mes programmes qui passe en mode protégé j'ai éssayé de renplir en 32bits le buffer d'écran en mode graphique 13h. Au déb
Affichage caractere par caractere d'une variable DT [ par Eclipz ]
BonjourVoila, un souci en MASM, j'ai une variable nommée Resultat de type DT et je voudrais afficher, caractere par caractere, son résultat... le prob
Table de MS Access [ par demidali ]
Bonjour !Simple question à savoir comment faire pour réinitialiser une clé auto à 1 après avoir fait des tests dans une table Access.Merci !demidali
Lecture/ecriture sur disquette [ par Stormy ]
Voici ma question (TangyX, tu es exempté de réponse). Une disquette est composée de 2 faces (jusque là c 'est bon) chacune composée de 80 pistes de 18
declaration [ par noel70 ]
Bonjour a tous.Voila, lorsqu'on veut déclarer une variable de type réelle, on utilise cette syntaxe..dataNom_de_la_varaible dq 0.0J'aimerais sav
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|