virtuelle Registry/Filesystem



  • Moinsen,

    ich hoffe, dass ich in der richtigen Section poste...

    Also, ich würde gern in Erfahrung bringen wie man eine virtuelle Registry/Filesystem programmiert.
    Ich habe mir schon die Finger und Augen wund gegoogelt, aber nichts vernünftiges gefunden.

    Kann mir irgendjemand hier im C++ Brett weiterhelfen (Links/Tutorials...) ?

    Außerdem würde mich interessieren wie eine "Sandbox" programmiert wird...

    Ich weiß, ich weiß..., es gibt schon fertige Programme wie Sandboxie u.ä., aber ich möchte so etwas gern selbst realisieren, oder es zumindest versuchen.

    Gruß
    C++Greenhorn



  • Ein virtuelles Filesystem baut man in dem man einen Dateisystem-Treiber schreibt. Das geht mit Fuse zB sehr leicht.

    "Sandbox" ist ja eher ein Sammelbegriff. Da gibt es diverse Konzepte wie man das umsetzen kann. Von einfachen (unsicheren) Konzepten, die einfach die zu ladenden Libraries auf eigene entschärfte Versionen umbiegen bis hin zu Lösungen, die Computer Virtualisierung nutzen oder einen PC emulieren (für letzteres solltest du dir mal QEmu anschauen, das ist Open Source und mit kvm kann es auch Visualisierung).



  • Hi rüdiger,
    vielen Dank für die schnelle Antwort. 🙂

    Ich würde gern Applikationen virtualisieren, d.h. meine Applikation soll "glauben" sie sei installiert/registriert.
    Es gibt da auch schon Programme für, aber die kann ein Normaluser sich nie im Leben leisten. 😞
    Deshalb interessiere ich mich für diese Technik und würde gern so etwas selbst realisieren.

    Wo kann man nun in Erfahrung bringen, wie so etwas gemacht wird, also keine Schema-Beschreibungen, sondern Programmierbeispiele o.ä. !

    Gruß

    Edit: Die Fuse seite sieht schon sehr gut aus, das ganze soll aber auf Windoof laufen...



  • Für so etwas nimmt man in der Regel eine Virtualisierungs/Emulations-Software ala VMWare (kommerziell), VirtualBox (OpenSource) oder QEmu (OpenSource) und richtet für das "schadhafte" Programm eine "künstliche" Umgebung ein.



  • C++Greenhorn schrieb:

    Edit: Die Fuse seite sieht schon sehr gut aus, das ganze soll aber auf Windoof laufen...

    armer rüdi! posted ständig seine linux/gnu tips, aber keiner will was von linux wissen...
    @OP: wenigstens vmware gibt's auch (kostenlos) für windoof.
    oder das: http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx
    (kostet auch nix)



  • Vielen Dank, ihr beiden !

    Wie gesagt, ich möchte keinen PC emulieren, sondern es geht mir darum Applikationen Installationsfrei von meinem USB-Stick laufen zu lassen, ohne den Host PC zu manipulieren.
    Es soll auch kein Schadcode ausgeführt werden oder so etwas...

    Seht euch doch einmal das hier an --> http://www.thinstall.com/products/virtualization_suite.php

    Versteht ihr jetzt was ich meine ???

    (Das Proggie kostet ungefähr genausoviel wie das Space Shuttle !) 😮

    So etwas würde ich gern selbst auf die Beine stellen...

    Gruß

    p.s.: Linux ist ein tolles OS und ich beschäftige mich sehr gern damit, deshalb vielen Dank noch einmal für die Links, rüdiger !!! Weiter so ! 😃



  • Du kannst unter Windows glaube ich mit "hooks" einzelne API-Funktionen überschreiben. Dann kannst du zB auch die Funktionen für den Registry-Zugriff überschreiben und die Daten eben in einer Datei speichern.

    @vista
    ich zeig den Leuten eben gerne, wie leicht sie es mit Linux hätten :p



  • Habe mir vor zwei Wochen ein Buch zur WinAPI Programmierung gekauft, aber ich glaube ich habe nichts über "hooks" im Inhaltsverzeichnis gelesen, kannst Du mir das ein wenig näher beschreiben ? Was ist ein "Hook" ?
    Ich habe folgendes dazu gefunden, aber mein technisches Englisch ist nicht sonderlich gut --> http://www.codeproject.com/system/hooksys.asp

    Und sollte ich das Thema noch einmal in der API Section hier im Board posten ?

    Wie mein Nickname schon erkennen lässt bin ich noch ein Rookie..., aber das soll mich nicht von meinem Ziel abbringen ?
    Bin auch schon fleißig am lernen (mit 'C++ Primer' und 'Die Kunst des Programmierens in C++'), also lacht mich bitte nicht aus oder so...
    Ich weiß, es ist noch ein gutes Stück Weg, das ich zurückzulegen habe, aber das wird schon ! 😉
    Einiges an Infos über PE Header habe ich auch schon zusammengetragen, und über Speichermanagement, z.B. --> http://www.codeproject.com/system/inject2exe.asp

    Gruß



  • Es gibt unter Windows Hooks, aber mit denen kann man keine API Funktionen unterschreiben. Das OS bietet einem dazu überhaupt keinen direkten Weg an, also muss man es irgendwie hintricksen.

    Eine Möglichkeit ist es direkt die DLLs im Speicher zu patchen (z.B. einfach den Anfang einer Funktion mit "jmp NeueFunktion" überschreiben), AFAIK kann man aber auch die IMPORT Tables zu überschreiben (was wesentlich sauberer wäre, aber denke ich komplizierter).

    Alles in allem nicht gerade einfach.



  • Das habe ich schon festgestellt, dass es sehr schwierig wird, aber das soll mich nicht davon abhalten... 😉

    Vielen Dank erst einmal an euch alle für das Interesse und die Hilfestellung ! 👍

    Gruß
    C++Greenhorn


Anmelden zum Antworten