Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi gelöschte dateien wiederherstellen (https://www.delphipraxis.net/77911-geloeschte-dateien-wiederherstellen.html)

fdsgbla 26. Sep 2006 18:13


gelöschte dateien wiederherstellen
 
kann man mit delphi gelöschte dateien wiederherstellen? wenn ja dann wie.
dass es mit assembler und c++ geht, das weiss ich.

SnuffMaster23 26. Sep 2006 18:15

Re: gelöschte dateien wiederherstellen
 
Dann bau doch deinen asm-Code in ein Delphi-Prog ein oder linke asm/c++-Binaries per DLL oder OBJ rein.

Ansonsten gehts sicher nur ganz eklig übers Win-API.

fdsgbla 26. Sep 2006 18:18

Re: gelöschte dateien wiederherstellen
 
Zitat:

Zitat von SnuffMaster23
Dann bau doch deinen asm-Code in ein Delphi-Prog ein oder linke asm/c++-Binaries per DLL oder OBJ rein.

mit assembler kenne ich mich kein bisschen aus


Zitat:

Zitat von SnuffMaster23
Ansonsten gehts sicher nur ganz eklig übers Win-API.

wie denn?

Luckie 26. Sep 2006 19:02

Re: gelöschte dateien wiederherstellen
 
Drück dich bitte mal etwas verständlicher aus. Delphi ist eine Entwicklungsumgebung und Programmiersprache. Dass man damit Dateien löschen kann ist mir neu. Ich kann mit Delphi ein Programm schreiben, welches mittels Windows Funktionen eine Datei löscht. Das geht aber mehr auch nicht.

SnuffMaster23 26. Sep 2006 19:04

Re: gelöschte dateien wiederherstellen
 
Naja, dein erster Post klang so als ob du wüsstest wie es mit asm/c++ geht.

Und wies übers Win-API geht weiß ich nicht, drum hab ich "sicher nur" geschrieben.

Tut mir leid dass ich dir nicht helfen kann.

//roter Kasten:
@Luckie: Mit asm kann das Delphi-Prog ohne Windows-Funktionen Dateien löschen ;)

Luckie 26. Sep 2006 19:54

Re: gelöschte dateien wiederherstellen
 
Zitat:

Zitat von SnuffMaster23
//roter Kasten:
@Luckie: Mit asm kann das Delphi-Prog ohne Windows-Funktionen Dateien löschen ;)

Und wie? DeleteFile ist eine Windows-Funktion. Diese markiert die Datei im File Allocation Table für gelöscht, so dass sie überschrieben werden darf, falls nötig. Wenn du das ohne diese API Funktion machen willst, wirst du wohl von Hand den FAT editieren müssen. Viel Spass bei dem undokumentierten NTFS.

SnuffMaster23 26. Sep 2006 21:19

Re: gelöschte dateien wiederherstellen
 
Sicher macht das keinen Spaß von Hand im Dateisystem rumzupfuschen :D.

Ok, hab grad nachgeschaut, es geht nicht direkt mit asm selber sondern eigentlich mit dem Prozessor 80x86.
Stichwort Interrupt 13h ;)

Und sag jetzt nicht dass Windows den Interrupthandler ersetzt!

Luckie 26. Sep 2006 21:44

Re: gelöschte dateien wiederherstellen
 
Tut es. Sonst könnte man im UserMode keine Dateien löschen. Wie gesagt, die Datei wird im FAT nur als gelöscht markiert. Da wird nicht physisch auf die Festplatte zugegriffen. Und wie das mit einem Interrupt funktionieren soll ist mir ehrlichgesagt schleierhaft. Die Hardware weiß doch gar nichts von den Daten und wie sie organisiert sind. Das weiß nur das Betriebssystems an Hand des Dateisystems.

SnuffMaster23 26. Sep 2006 21:51

Re: gelöschte dateien wiederherstellen
 
Eigentlich hast du Recht, das muss eigentlich ein Handler von Windows sein.

Als Parameter für die Interruptaufrufe gibts noch Sektoren, Spuren und so.
Die braucht man aber garnicht wenn man mit nem (fremden) Dateisystem arbeitet :?


@fdsgbla: Du könntest höchstens wie ein FileStream Speicherplatz anfordern, den aber nicht mit 0 initialisieren. Dann Byte für Byte durchkämmen ob du bekannte Dateiheader findest und die Dateien ins RAM laden oder auf sicher freien Platz auf der Platte schreiben.

Ich denke so machen das alle Dateiretter die zu kriegen sind.

TKC 26. Sep 2006 23:45

Re: gelöschte dateien wiederherstellen
 
Zitat:

Zitat von SnuffMaster23
@fdsgbla: Du könntest höchstens wie ein FileStream Speicherplatz anfordern, den aber nicht mit 0 initialisieren. Dann Byte für Byte durchkämmen ob du bekannte Dateiheader findest und die Dateien ins RAM laden oder auf sicher freien Platz auf der Platte schreiben.

Ich denke so machen das alle Dateiretter die zu kriegen sind.

Na hoffentlich nicht ....

Also zur Theorie:

!! Es gibt keinen API aufruf um gelöschte Dateien wiederherzustellen !!

Wenn du das selbst programmieren willst

1. Zugriff mit Deviceioctl herstellen
2. MFT oder FAT auslesen
3. MFT oder FAT durchsuchen und gelöschte Datei Records finden
4. Start und End Sector der gelöschten Datei aus dem Record auslesen
5. sollte dann klar sein oder ??

fdsgbla 27. Sep 2006 15:03

Re: gelöschte dateien wiederherstellen
 
joa danke ich werde mal gucken

SnuffMaster23 27. Sep 2006 15:28

Re: gelöschte dateien wiederherstellen
 
Zitat:

Zitat von ACE-ppc
Na hoffentlich nicht ....

War ja nur so ne Vermutung.
Ich hab mal irgendwo nen Bericht/Anleitung über so ein Tool gelesen, das "konnte" nur Bilder wiederherstellen.
Drum ging ich davon aus dass das so geht.

Aber deine Lösung klingt irgendwie "legaler" :D

himitsu 29. Sep 2006 15:37

Re: gelöschte dateien wiederherstellen
 
Zitat:

Zitat von Luckie
Und wie das mit einem Interrupt funktionieren soll ist mir ehrlichgesagt schleierhaft.

Über INT 13 konnte man mal "alles" mit dateien anstellen, vom öffnen, über erstellen, bis hin zum löschen ... aber alle Codes/Befehle, welche ich bisher dazu mal gesehen habe gehen nicht mehr unter WinNT, abgesehn davon waren daß eh alles 16-Bit-Befehle (also wenn sie noch gingen, dann wären sie nicht so effektiv unter Win32, wie die WinAPI).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz