Announcement

Collapse
No announcement yet.

Wie kann man VxD-Treiber laden...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann man VxD-Treiber laden...

    Hallo,

    ich bin schon seit längerer Zeit auf der Suche nach einer Möglichkeit Datei bzw. Ordner "unsichtbar" zu machen, dabei bin ich auf Programme wie WinSecure, FGuard, ProtectZ usw. gestoßen. WinSecure ist wurde zum Beispiel in Delphi geschrieben und benutzt VxD-Software-Treiber, um bestimmte Verzeichnis zu verstecken.

    Nun zu miener Frage: Wie kann man einen solchen VxD-Treiber in Delphi laden?

    Ich habe es mit folgenden Quelltext versucht:

    <pre>
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if CreateFile('C:\Fguard.vxd',
    0,0,nil,0,
    FILE_FLAG_DELETE_ON_CLOSE,0) = INVALID_HANDLE_VALUE then
    ShowMessage (IntToStr(GetLastError));
    end;
    </pre>

    Aber ich erhalte immer Fehler 87 - was mache ich falsch?

    Tschüss...

  • #2
    Hi Tim

    CreateFile('\\.\FGuard.vxd', ....)

    der VXD muss im Windows\system ordner liegen.

    Allerdings, kennst Du denn die Aufrufparameter für DeviceIOControl() vom FGuard.vxd ?? Ohne diese brauchste garnicht weitermachen.

    Gruß Hage

    Comment


    • #3
      Hallo Hagen,

      ich hätte zum ersten einmal ein paar grundsätzliche Fragen zum Thema VxD's.

      1.) Ich weiß, dass man <b>Software</b>-VxD's nur in Visual C++ programmieren kann - Warum (Hardware VxD's gehen in Delphi schon)?

      2.) Weshalb muss der Treiber im System-Verzeichnis sein und nicht wie bei FGuard.exe im selbigen?

      3.) Wie verwendet man "DeviceIOControl()"?

      4.) Gibt es kein Programm, dass die Aufruf-Parameter "loggen" kann? - Sonst kann man doch fast alles abfangen, hooken oder protokollieren (VxDMon von Sysinternals?).

      5.) Kann man nicht mit Assembler in Delphi oder auf andere Art und Weise den IFS-Manager hooken?

      Tschüss..

      Comment


      • #4
        Hi

        Viele Fragen und wenig genaue Antworten.

        1.) weil die meisten nötigen Includes im DDK eben nur C unterstützen, und zweitens es auch ein Linker Problem ist.

        2.) er muss nicht, sollte aber. falls er nicht im System liegt fängt Windows an den Suchpfad abzusuchen. Wurde der default Suchpfad geändert und es befindet sich eine andere datei gleichen namens dort so wird diese geladen. Den Rest kannste Dir denken...

        3.) schau in der Hilfe nach. DIOC() ist sehr flexibel mit den parametern und nutzt meistens Record structuren. Diese sind extrem abhängig vom VXD-Code.

        4.) Doch die gibts, man kann sehr wohl die AUFRUFE protokollieren mit Namen, ID, Einsprungspunkt und sogar aufrufendem prozess. ABER, das nützt Dir nichts da Du die Recordstructuren deren Inhalt, Verwendungszweck und Aufbau nicht kennst.

        5.) Auch das geht, zumindest unter Win9x, ABER es ist obergefährlich wenn man NICHT weis was man tut. Dieses Wissen impliziert das GENAUE Wissen über den VXD, seine Dienste und Recordstructuren )
        D.h. man kann dann gleich DIOC() nutzen.

        Gruß Hage

        Comment


        • #5
          Hallo,

          hmm, wegen der Lösung meines Problems bin ich jetzt zwar immer noch nicht viel weiter aber wenigstens einen kleinen Schritt.

          Um Dateien vor anderen Usern des Systems zu verstecken bzw. den Zugriff nur von meinem Programm zu erlauben, <i>muss</i> man einen VxD-Treiber programmieren, der den IFS-Manager hooked. Soweit so gut, aber wo könnte man ein Beispiel für solch einen VxD finden?

          Ich habe im Internet schon deswegen gesucht, bin jedoch auf wenig hilfreiche Dinge gestoßen, wie zum Beispiel sources für "FileMon" von SysInternals oder die Seite von NuMega.

          Es gibt im Internet haufenweise Programme, die ich ja schon genannt hatte (InvisibleFiles, HideFolder, ...), die alle mit VxD's arbeiten, aus diesem Grunde dürfte es doch nicht so sehr schwer sein soetwas in der Art zu finden - oder ... :-)

          Ich werde mich gleich mal ein bisschen mehr mit DIOC() beschäftigen. Welche Programme wären das, die die VxD-Aufrufe protokollieren (VxDMon)?

          Tschüss..

          Comment


          • #6
            Hallo,

            wie funktioniert der Ladevorgang bei Windows eigentlich?

            Zum Beispiel wird doch der VXD-Treiber beim Starten statisch geladen, könnte man dies in Delphi nicht auch realisieren?

            Tschüss..

            Comment


            • #7
              Hallo,

              wenn man mit Assembler eine VxD schreibt und zum Beispiel:
              <pre>
              EXPORTS
              Test_DDB @1
              </pre>
              schreibt ... wie müsste dann der Aufruf über "DIOC" erfolgen?

              Tschüss..

              Comment


              • #8
                Hi Tim

                Ich glaube Du gehst viel zu blauäugig und unsystematisch vor. Hol Dir das DDK und alle Dokus die Du bei MS finden kannst, studiere sie und dann versuch C Sourcen zu analysieren. Ein SYS oder VXD hat ein komplett anderes Dateiformat als EXE/DLL's -> PE oder NE format.

                D.h. wie oben angedeutet ein EXPORT irgend einer Funktion bringt überhaupt Nichts, da EXPORTS ein PE/NE Files Feature ist.

                Gruß Hage

                Comment

                Working...
                X