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
Partie haute et basse [ par noname001 ]
Bonjour à tous, voilà j'aurais essentiellement 2 questions: 1)J'ai un petit soucis concernant la partie haute et basse d'une variable. Imaginons qu
Probléme USART sur un PIC 18F46k20 [ par leonidax86 ]
Bonjour, J'essaie de mettre au point une communication RS232 entre un PIC 18F46k20 et une IHM ( codé sous CVI). J'utilise la carte DEMO Board du PI
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
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYSTECHDAYS PARIS 2012 : COMMENT SHAREPOINT A SAUVé MES TECHDAYS par ROMELARD Fabrice
Speakers : Lionel Limozin et Alain Marty La session commence par une découverte de SharePoint à travers la mise en place d'un environnement SharePoint pour la gestion des Sessions animées par BeWise. Le besoin est très ba...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0PERSPECTIVE 3.0 POUR SILVERLIGHT 5.0 par odewit
Je viens de publier la version 3.0 de Perspective pour Silverlight, qui regroupe un portage sous Silverlight 5.0 des fonctionnalités de Perspective 2.0, le framework 3D de haut-niveau introduit récemment et de nouveaux exemples de code. En voici la li...
Cliquez pour lire la suite de l'article par odewit TECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVERTECHDAYS PARIS 2012 : TOP 10 DES BEST PRACTICES POUR SQL SERVER par ROMELARD Fabrice
Speaker : Nadia Ben El Kadi Configuration machine La session commence par la toute première question à se poser lors de la mise en place d'environnement SQL Server, la configuration des machines : Type de mac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SITECHDAYS PARIS 2012 : KINECT + OFFICE 365 UN BON GESTE POUR VOTRE SI par ROMELARD Fabrice
Speakers : Fabrice Barbin, Samuel Blanchard, Julien Lo Presti Titre Prometteur et attractif invitant à voir comment lier le composant ludique Kinect dans le cadre d'une structure IT classique, notamment au travers de la plat...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOURTECHDAYS PARIS 2012 : PLEINIèRE DU PREMIER JOUR par ROMELARD Fabrice
KeyNotes du premier jour pour les développeurs. La session est principalement axée sur une des principales directions prise par Microsoft à travers tous ses nouveaux produits : Cloud privé ou public (Solution Azure) ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|