Seite 2 von 2

Verfasst: 03.08.2006 14:21
von Laurin
Kaeru Gaman hat geschrieben:DANKE!
Np :wink:
das bedeutet aber ja im gegenzug, dass wenn ich meinen buffer im Datensegment habe,
das keine execute-rechte besitzt, ein buffer-overflow mir nichts anhaben kann,
jedenfalls kein code zur ausführung kommen kann... oder?
Das ist richtig. Aber ist es nicht so, dass heutzutage (durch das Flat-Model) Daten- und Code-Segment zu einem Segment verschmolzen sind? Mir ist so.
Mehrere Segmente kenne ich nur von DOS-Programmen.
besser auf jeden fall sauber begrenzen. :allright:
Jo :allright:

Verfasst: 03.08.2006 14:47
von Eric
In einer c't gab es einen Artikel zu dem Thema. (Ich weiß leider nichtmehr in welcher Außgabe)

Das ganze funktioniert, weil die lokalen Variablen auf dem Stack abgelegt werden
und der Stack von 'oben' nach 'unten' wächst.

Erst kommen die Parameter, dann die Rücksprungadresse, evtl. noch einige
gesicherte Register und danach die lokalen Variablen.

So kann die Rücksprungadresse überschrieben und dadurch beliebiger Code
ausgeführt werden.


Mal ein Beispiel:

Code: Alles auswählen

Procedure Test(a,b)
  Dim Buffer.b(100)
  ReceiveNetworkData(a, @Buffer, b)
EndProcedure
Der Stackaufbau innerhalb von Test()
(Die Adressen der Elemente nehmen nach unten ab, d.h. der Buffer liegt
vor der Rücksprungadresse im Speicher.)

Code: Alles auswählen

Parameter B
Parameter A
Rücksprungadresse
(gesicherte Register ebp...)
Buffer
Solange b<=100 ist, ist alles ok, aber wenn b>100 ist, werden erst die
gesicherten Register überschrieben und danach die Rücksprungadresse.
Wenn die Rücksprungadresse überschrieben ist,
kehrt ProcedureReturn nicht an die Stelle von wo die Prozedur aufgerufen wurde
zurück, sondern Springt an die manipulierte Adresse.
Das Programm kann dann durch einen ungültigen Speicherzugriff abstürzen
oder aber etwas ganz anderes ausführen.

Wobei ich mir nicht sicher bin, ob Dim überhaupt lokale Variablen auf dem Stack ablegt.

Verfasst: 03.08.2006 16:47
von DataMiner
Nur mal so ein Tipp am Rande: Hamachi oder i2p
http://de.wikipedia.org/wiki/Hamachi
http://de.wikipedia.org/wiki/I2P

VNP's leichtgemacht.

Verfasst: 03.08.2006 21:45
von PBZecke
Erstmal Danke an alle für die informativen Beiträge!

Was ich letzten endes daraus entnehmen kann ist, dass ich es besser sein
lasse. Um das einigermaßen sicher zu machen, müsste ich mich mehr mit
dieser Materie befassen, da dies meine derzeitigen Fähigkeiten
überschreiten würde. :cry: Dies würde auch den Aufwand nicht lohnen, da ich
von Anfang an keine kommerzielle Verwertung diesbezüglich in Betracht
gezogen hatte.