Zugriffsverletzung bei Adresse 32566694

Schnelle objektorientierte, kompilierende Programmiersprache.
BLACK_AXE
Beiträge: 12
Registriert: Di Jan 19, 2010 7:09 pm

Zugriffsverletzung bei Adresse 32566694

Beitrag von BLACK_AXE » Mo Mai 31, 2010 8:49 pm

Hy

hab ein problem. Ich möchte in die datei C:windows.system32.driver.etc.hosts. eine neue "ip" eintragen.
dies wollte ich jetzt mit C realisieren hab aber jetzt folgenden fehler:
Zugriffsverletzung bei Adresse 32566694 in Modul 'CC3250M.DLL' Lesen von Addresse F9B0E5E8.

hab versucht die datei in einer .txt umzubenennen hat dan auch geklappt.
hättet ihre eine Idee wisso das net klappt ?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von cloidnerux » Mo Mai 31, 2010 9:03 pm

Zugriffsverletzung bei Adresse 32566694 in Modul 'CC3250M.DLL' Lesen von Addresse F9B0E5E8.
Das bedeuted erstmal, das du versucht auf ein Modul zuzugreifen, was dein Programm aber aus Technischen gründen nicht darf, weil die addresse an einem geschützten Speicherbereich steht.
Das sieht für mich aus, als hättest du mit einem Pointer mist gebaut, als ihn an eirgendeiner stelle falsch verwendet, z.B sowas:

Code: Alles auswählen

int *ptr = malloc(....);
//Hier statt einer Variable zuweisen, dem Pointer eine neue Addresse zuweisen, weil das ' * ' vergessen wurde.
ptr = 12;
Außerdem musst du die Datei nicht als .txt umbennen, denn die Endung macht für dein programm kein unterschied, es handelt sich vorher wie nacher um ein Dokument, mit 8-Bit Text (char).
Redundanz macht wiederholen unnötig.
quod erat expectandum

BLACK_AXE
Beiträge: 12
Registriert: Di Jan 19, 2010 7:09 pm

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von BLACK_AXE » Mo Mai 31, 2010 9:14 pm

danke für die schnelle Antwort ;)

das mit ptr=12; funktioniert ja nicht weil eine Konvertierung von int nach FILE nicht möglich.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von cloidnerux » Mo Mai 31, 2010 9:19 pm

das mit ptr=12; funktioniert ja nicht weil eine Konvertierung von int nach FILE nicht möglich.
Doch ist möglich. Denn FILE ist nur ein define für den Pointer auf eine Struktur.
Und wenn man vlt mal etwas unaufmerksam war, und man so eine meldung bekommt, kann es leicht passieren, dass man dann

Code: Alles auswählen

ptr = (FILE)12;
schreibt. Das sollte der Compiler Problemlos schlucken.
Aber was mir gerade einfällt. Es kann sein, das du durch die änderung der Endung den Datei-handle ungültig werden lässt, da der auf eien andere Datei verweist.
Evt musst du dein FILE Pointer auf die neue Datei Refernezieren.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von Xin » Mo Mai 31, 2010 9:19 pm

Hallo Black Axe,
BLACK_AXE hat geschrieben:danke für die schnelle Antwort ;)

das mit ptr=12; funktioniert ja nicht weil eine Konvertierung von int nach FILE nicht möglich.
Leider beschreibst Du nicht, was Du genau tust.
Wenn Du mit Visual Studio entwickelst, sollte das Programm im Testlauf genau an der Stelle stehen bleiben, wo es knallt.

Ohne diese Informationen und ohne Quelltext kann niemand sagen, was da schief geht. Mit extrem hoher Wahrscheinlichkeit wird eine Variable nicht korrekt initialisiert sein. Kann es sein, dass beim Kompilieren des Quelltextes Warnungen ausgegeben werden?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

BLACK_AXE
Beiträge: 12
Registriert: Di Jan 19, 2010 7:09 pm

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von BLACK_AXE » Mo Mai 31, 2010 9:26 pm

ich stell mal den Quelltext rein vll. hilfts ja.

Code: Alles auswählen

{
    FILE *datei;

   char path[50];
   sprintf( path, "C:/WINDOWS/system32/drivers/etc/hosts");
   datei = fopen ( path, "a+");
   fprintf(datei, "meine ip");  //schreibe den Datensatz
   fclose(datei);                    
}

BLACK_AXE
Beiträge: 12
Registriert: Di Jan 19, 2010 7:09 pm

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von BLACK_AXE » Mo Mai 31, 2010 9:29 pm

es "knallt" bei fprintf zeile.
benutze Borland C++ Builder

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von cloidnerux » Mo Mai 31, 2010 9:32 pm

Dann stimmt wohl was beim Öffnen nicht.
Prüfe vor dem fprintf, das dein Pointer nicht 0 ist:

Code: Alles auswählen

datei = fopen ( path, "a+");
if(datei == 0)
{
    //Fehlermeldung: Datei konnte nicht geöffnet werden
    return;
}
Es kann sein, das an deinem Pfad etwas nicht stimmt.
Muss es unter Windows nicht egt heißen:
"C:\\WINDOWS\\System32\\drivers\\etc\host"?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von Xin » Mo Mai 31, 2010 9:33 pm

BLACK_AXE hat geschrieben:ich stell mal den Quelltext rein vll. hilfts ja.

Code: Alles auswählen

{
    FILE *datei;

   char path[50];
   sprintf( path, "C:/WINDOWS/system32/drivers/etc/hosts");
   datei = fopen ( path, "a+");
   fprintf(datei, "meine ip");  //schreibe den Datensatz
   fclose(datei);                    
}
Es gibt die Datei "C:/WINDOWS/system32/drivers/etc/hosts" nicht. Sie heißt vermutlich "C:\WINDOWS\system32\drivers\etc\hosts" und damit Du das C vermitteln kannst musst du "C:\\WINDOWS\\system32\\drivers\\etc\\hosts".

Wenn es die Datei nicht gibt, ist "datei" null. Du hast aber keine Abfrage, ob Du die Datei erfolgreich geöffnet hast, sondern Du textest einfach in eine Filehandle, dass auf keine Datei zeigt. => Bääng! ;-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Zugriffsverletzung bei Adresse 32566694

Beitrag von cloidnerux » Mo Mai 31, 2010 9:38 pm

Wenn es die Datei nicht gibt, ist "datei" null. Du hast aber keine Abfrage, ob Du die Datei erfolgreich geöffnet hast, sondern Du textest einfach in eine Filehandle, dass auf keine Datei zeigt. => Bääng! ;-)
@Xin: Ob die Lösung in C++, mit deinen "geliebten" Exceptions wohl besser ist ;) ?
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten