AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateien und Registry-Einträge für eine Anwenugn simulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien und Registry-Einträge für eine Anwenugn simulieren

Ein Thema von tr909 · begonnen am 7. Jan 2008 · letzter Beitrag vom 10. Jan 2008
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.590 Beiträge
 
Delphi 12 Athens
 
#1

Re: Dateien und Registry-Einträge für eine Anwenugn simulier

  Alt 10. Jan 2008, 11:31
viele Rootkits machen halt "nur" Ersteres (Zugriff sperren)

also Funktion abfangen und wenn einer der "gewünschten" Datei-/Schlüssel-/Wertnamen verlangt wird, dann einfach behaupten die/der/den Datei/Schlüssel/Wert gäbe es nicht
und ansonsten wird der Aufruf an die WinAPI weitergeleitet.

Du mußt genau das Gegenteil machen:
Datei-/Schlüssel-/Wertname prüfen und wenn erforderlich der WinAPI einen anderen Namen übergeben
oder selber ein passendes Ergebnis (Result) zurückgeben.

z.B. wenn du alles was in C:\Verzeichnis1\... drin ist in X:\Verzeichnis2\ speichern willst, dann brauchst du nur alle Datei-/Verzeichnisnamen welche das Programm verlangt überprüfen und wenn der Name mit C:\Verzeichnis1\ anfängt, dann dieses durch X:\Verzeichnis2\ ersetzen und den neuen Namen an die WinAPI weitergeben.

So als einfaches Beispiel (ohne Behandlung von Groß-Kleinschreibung, langen/kurzen Dateinamen, unterschiedlichen Mountadressen und was es sonst noch gibt...)
Delphi-Quellcode:
APIDirExists := @DirExists; // billiger Hook-Ersatz
DirExists := @DirExistsHook;

Function DirExistsHook(Dir: String): Typ;
  Begin
    // einfach nur ein bestimmtes Verzeichnis umleiten
    If Copy(Dir, 1, 16) = 'C:\Verzeichnis1\Then
      Dir := 'X:\Verzeichnis2\' + Copy(Dir, 17, Length(Dir);
    Result := APIDirExists(Dir);
  End;
Delphi-Quellcode:
APIDirExists := @DirExists; // billiger Hook-Ersatz
DirExists := @DirExistsHook;

Function DirExistsHook(Dir: String): Typ;
  Begin
    // umleiten
    If Copy(Dir, 1, 16) = 'C:\Verzeichnis1\Then Begin
      Dir := 'X:\Verzeichnis2\' + Copy(Dir, 17, Length(Dir);
      Result := APIDirExists(Dir);

    // sperren/verstecken
    End Else If Copy(Dir, 1, 16) = 'D:\Verzeichnis3\Then Begin
      Result := False;

    // so tun als gäbe es das Verzeichnis
    End Else If Copy(Dir, 1, 16) = 'D:\Verzeichnis4\Then Begin
      Result := True;

    // unverändert behandeln lassen
    End Else
      Result := APIDirExists(Dir);
  End;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:16 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