AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dynamische Arrays

Ein Thema von Mr.M · begonnen am 7. Mai 2004 · letzter Beitrag vom 7. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
Mr.M

Registriert seit: 7. Mai 2004
5 Beiträge
 
Delphi 7 Enterprise
 
#1

dynamische Arrays

  Alt 7. Mai 2004, 15:05
Hi,

ist nur eine kleine winzige Frage:

Warum kann ich bei nullbasierte dynamischen Arrays, die zum Beispiel mit SetLength(Array, 2) dimensionalisiert sind, auch auf eine höhere Dimension etwas zuweisen und zugreifen.
Z.B. : Array[10] := 5; ShowMessage(array[10]);

Ich dachte man könne nur von 0 bis der angegebenen Länge -1 zugreifen. Kann mir das einer erklären?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:09
Moin!

Kannst du auch nur, du überschreibst mit der Wertzuweisung den folgenden Speicher und der liegt noch in deinem Datenbereich, daher hast du keine Probleme. Wenn du aber mal unter Projekt->Optionen->Compiler die Bereichsprüfung einschaltest, dann meckert er dich auch an.

Ansonsten zur Verdeutlichung:
Delphi-Quellcode:
Var
  Arr : Array[0..3] Of Word;
  Word1,
  Word2 : Word;
Wenn du bei der Definition auf das Arr[4] was reinschreibst, dann wird dieses höchstwahrscheinlich danach in Word1 drinne stehen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:13
Zitat von Muetze1:
Ansonsten zur Verdeutlichung:
Das ist gut, jetzt hast du mich total verwirrt und muss dich auch mal was fragen.

Zitat von Muetze1:
Wenn du bei der Definition auf das Arr[4] was reinschreibst, dann wird dieses höchstwahrscheinlich danach in Word1 drinne stehen...
Warum ist das so?

Wieso gerade in Word1?

Kann es sein, dass ich Word1 einen Wert zuweise, aber dieser dann überschrieben wird, wenn ich auf die 4. Stelle des Arrays zugreife?
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#4

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:24
wenn du arr[4] veränderst ja

das Problem hatte ich auch mal, als ich eine falsche Größenangabe für ein Array in einem Test-Crypter hatte... nach dem Entschlüsseln kamen plötzlich gaanz andere Werte raus da Teile von anderen Variablen/Arrays durch diese Falschangabe verändert wurden...

[add]
eventuell könnte es sogar vorkommen, das du beim schreibenden Zugriff über die Array-Grenze hinaus Programmcode überschreibst (?) und damit einen BufferOverflow erzeugst wie er in vielen Sicherheitslücken benutzt wird (?)
[/add]
nich schlagen wenn ich falsch liege, aber ich hab das so in Erinnerung

[edit]
Tepfihler beseitigt
[/edit]
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Mr.M

Registriert seit: 7. Mai 2004
5 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:40
Erstmal danke für die Antworten, ist sehr aufschlussreich. Das mit dem Buffer Overflow möchte ich aber gerne genauer wissen. Wäre nämlich interessant zu erfahren.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:45
Das würde mich auch interessieren.

Zitat von The-X:
eventuell könnte es sogar vorkommen, das du beim schreibenden Zugriff über die Array-Grenze hinaus Programmcode überschreibst
Wie geht das, wenn der Programmcode in der exe gar nicht mehr so einfach, bzw. gar nicht mehr verändert werden kann. Oder kann man das noch in der exe "umprogrammieren"?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:46
Das Prinzip besteht darin, über die Grenzen eines Arrays hinaus in den Speicher zu schreiben. Damit kommst du unter Umständen in den Speicherbereich eines anderen Prozesses, bzw. in den Bereich wo der Code eines anderen Prozesses liegt. Springt der ProgramCounter des Prozesses nun an die neue Stelle, führt er deinen Code anstatt dem originalen aus. Wenn du das ganze dann ganz gezielt machst, kannst du diese "Fehler" in wichtigen Dateien erzeugen, und somit die Sicherheit eines System kompromittieren.
so glaube ich das Ganze verstanden zu haben, schlagt mich nicht wenns falsch ist
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#8

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:53
genau so meinte ich das

wenn kein "gültiger Code" an dieser Stelle steht, dann kommt es meist zum Absturz (ungewollt)...
aber durch gezieltes Ändern wird dann schadhafter Code ausgeführt, was zum Beispiel bei System-Prozessen fatale Folgen haben kann...
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:56
Wenn M$ aber den Speicherschutz für Systemprogramme richtig implementieren würde, würde das ganze Problem nicht auftereten. Speicherschutz bedeutet, dass ich nur an meinen Speicherbereich rankomme und den anderen in Frieden lassen muss. Somit kann ich fremden Code nicht mehr überschreiben und 50% der aktuellen Viren wären mal außer Gefecht.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 30. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#10

Re: dynamische Arrays

  Alt 7. Mai 2004, 15:59
Schon, aber dann bleibt trotzdem noch das Problem im lokalen Prozess,
was man ja zu hauf in Internet-Anwenungen findet indem man Fehlerhafte Daten an den Client/server sendet, diese nicht drauf klar kommen und abstürzen
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz