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
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

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

  Alt 7. Jan 2008, 09:23
Moin. Ich wollt mal fragen ob jemand von euch eine Möglichkeit kennt, mit der ich einem Programm "vorgauckeln" kann, das div. Dateien in einem bestimmten Ordner sowie bestimmte Regitsry-Einträge vorhanden sind. Sowas ähnlich macht glaub ich Thinstall. Damit kann man Anwendungen "virtualisiert" in einer exe-Datei "installieren" und hat dann eine portable Anwendung.

Gruß
DerAnkh
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 7. Jan 2008, 09:25
Beim "Vorgaukeln" würde mir Hooken der entsprechenden API-Funktionen für diesen Prozess einfallen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 9. Jan 2008, 12:22
Vor einer Weile hab ich auch mal an sowas gedacht,
(nja, hatt noch nicht genügend Zeit dafür gefunden)

sozusagen eine MiniSandbox für ein Programm.

Und das Hooken API wäre da bestimmt eine gute Idee, nur welche Funktionen da alle gehookt werden sollen/müssen ist da eines der Probleme.
(OK und mit Hooks hab ich auch noch keine Erfahrungen und das müßte ich och erstmal lernen -.-'')

Im Grunde mußt du nur alle "nötigen" API's umleiten, welche auf Dateien und die Registry zugreifen.

Aufruf im Programm > dein Hook > WinAPI

im Hook mußt du dann nur noch Anhand der übergebenen Parameter entscheiden was gemacht werden soll
- Zugriff sperren (z.B. per Rückgabewert behaupten die Datei gäbe es nicht)
- selber den Zugiff ausführen (da kann man dann z.B. Pfade ändern)
- oder alles an die WinAPI weiterleiten (wenn nichts geändert werden soll)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 10. Jan 2008, 09:03
also was ich bis jetzt gefunden habe sind folgende APIs
Code:
NtCreateFile
ZwOpenFile
ZwQueryDirectoryFile
ZwOpenKey
ZwQueryKey
ZwQueryValueKey
ZwEnumerateValueKey
ZwEnumerateKey
ZwSetValueKey
ZwCreateKey
Diese werden wohl für ein RootKit verwendet, um Dateien zu verstecken, aber ich will ja genau das Gegenteil.
Was ich vor habe ist sowas ähnliches wie eine MiniSandBox. Ich Bastel mir gerade ein eigenes "Menü" für meine PortableApps und nun wollte ich mal sehen ob es möglich ist auch Programme portabel zu machen die eigentlich installiert werden sollen.
Ich werd mir mal die Hook-Tutorials angucken und sehen wie weit ich komme.

Gruß
tr909
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 10. Jan 2008, 12: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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz