Hi Leute,
folgender Standpunkt:
Ich habe eine Applikation, nennen wir sie mal "VideoPlayer".
Zudem habe ich eine Input-Datei, nennen wir sie mal "input.mpeg".
Von der Inputdatei erstelle ich nun verschiedene Versionen, in denen ich einzelne Bytes vertausche.
Nun bringt eine der generierten Dateien das Programm zum Absturz. Ich erhalte eine Read-Access-Violation oder eine Write-Access-Violation.
Als Debugger verwende ich WinDBG, mit dem Modul "!exploitable" (klick mich, ich bin ein Link) . !exploitable sagt mir nun, dass sich der identifizierte Fehler ausnutzen lässt.
Die große Frage ist nun aber: wie? Wenn ich eine Read/Write Access Violation erhalte, habe ich ja (noch) keine Kontrolle über den EIP, sprich, ich möchte beispielsweise den EIP überschreiben.
Wie gehe ich nun am besten vor? Gibt es dort spezielle Techniken? Oder brauch man noch mehr Debugger Info, um das ganze bewerten zu können?
Gruß,
icehill
folgender Standpunkt:
Ich habe eine Applikation, nennen wir sie mal "VideoPlayer".
Zudem habe ich eine Input-Datei, nennen wir sie mal "input.mpeg".
Von der Inputdatei erstelle ich nun verschiedene Versionen, in denen ich einzelne Bytes vertausche.
Nun bringt eine der generierten Dateien das Programm zum Absturz. Ich erhalte eine Read-Access-Violation oder eine Write-Access-Violation.
Als Debugger verwende ich WinDBG, mit dem Modul "!exploitable" (klick mich, ich bin ein Link) . !exploitable sagt mir nun, dass sich der identifizierte Fehler ausnutzen lässt.
Die große Frage ist nun aber: wie? Wenn ich eine Read/Write Access Violation erhalte, habe ich ja (noch) keine Kontrolle über den EIP, sprich, ich möchte beispielsweise den EIP überschreiben.
Wie gehe ich nun am besten vor? Gibt es dort spezielle Techniken? Oder brauch man noch mehr Debugger Info, um das ganze bewerten zu können?
Gruß,
icehill