Accueil > Forum > > > > Access violation et ecriture de variable
Access violation et ecriture de variable
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ée 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
Ecriture caractère passé en paramètre [ par LandTech ]
Bonjour, comme c'est dit dans le titre je voudrais afficher un caractère passé en paramètre avec l'interruption Bios 10h.j'ai écris un code mais Nasm
ecriture en b8000 [ par laurent0502 ]
Bonjour , En fait , je recherche tout simplement d'écrire en b8000 en mode protégé comme quand on fait en dos sans utiliser les interruptions.Merci.
buffer directx [ par mana ]
bonjour, je travail avec des image dont l'adresse est un pointeur directx(dans la ram du pc , pas cette de la carte vidéo), mais l'accès a la mémoire
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
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont RE : PIC 16F84RE : PIC 16F84 par belounis
Cliquez pour lire la suite par belounis RE : PIC 16F84RE : PIC 16F84 par pont
Cliquez pour lire la suite par pont
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|