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
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
Livres en rapport
|
Derniers Blogs
VISUAL STUDIO TALK SHOW: EF4VISUAL STUDIO TALK SHOW: EF4 par Matthieu MEZIL
La semaine dernière, j'étais à Montréal pour y animer des conférences sur Entity Framework. J'en ai profité pour enregister un podcast Visual Studio Talk Show que vous pouvez retrouver ici ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ![MIX 2010] - WINDOWS PHONE 7 EN SUPER STAR DU MICROSOFT MIX 2010 ! par redo
Me voici enfin arrivé au Microsoft Mix 2010, je dois vous avouer être arrivé un peu plus tard que d'habitude, ce qui explique que je n'ayez vu aucune info passer quant au premier keynote . certains événements sont plus importants que tout, ce qui était mo...
Cliquez pour lire la suite de l'article par redo [MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ![MIX 2010] - LIVRE GRATUIT SUR PROGRAMMER WINDOWS PHONE 7 SERIES ! par redo
Disponible gratuitement : (153 pages) PDF Version : http://download.microsoft.com/download/7/C/8/7C820C6F-C205-4ECF-B9F3-1505DD13F9BF/ProgWinPhonePreview.pdf XPS Version : http://download.microsoft.com/download/E/3/5/E359FC51-1CF5-47F1-9BF3-74AB09D3339B/P...
Cliquez pour lire la suite de l'article par redo SQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLRSQL SERVER : ESTIMER LE NOMBRE DE LIGNES RENVOYéES PAR UNE REQUêTE AVEC SQLCLR par christian
Dans certains cas très particuliers il peut être intéressant de savoir le nombre de ligne que va renvoyer une requête sans exécuter cette dernière. En effet les opérations de comptage sont généralement gourmande en ressource est très difficile à optim...
Cliquez pour lire la suite de l'article par christian [WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF![WF4] ACTIVITY AVEC VUE DéTAIL MASQUéE PAR DéFAUT, VIVE WPF! par JeremyJeanson
Le code suivant est destiné à répondre à une problématique courante en Workflow : Vous avez une activité dont le designer est complexe ou dont l'affichage prend une place importante à l'écran et la possibilité Collapse/Expand ne répond pas pleinement à vo...
Cliquez pour lire la suite de l'article par JeremyJeanson
Forum
RE : CSHARPRE : CSHARP par ghuysmans99
Cliquez pour lire la suite par ghuysmans99 CSHARPCSHARP par nano16
Cliquez pour lire la suite par nano16
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|