Ich möchte meine gesamte Anwendung komprimieren und verschlüsseln, möglicherweise mit Zip, 7z, Bz2, Tar oder einer beliebigen Komprimierungsmethode, und AES-128/256 als Verschlüsselungsalgorithmus für Sicherheitszwecke verwenden. Erstellen Sie dann eine Launcher-Anwendung, die die Ausführung der Anwendung und die Entschlüsselung des Archivs übernimmt.Ausführen einer Anwendung in einer Archivdatei ohne Extraktion
Ich habe schon eine Idee, wie man es erreichen, aber mit Referenzen/Bibliotheken nur:
Die Anwendung wird die Entschlüsselung der Datei mit #ZipLib, das Passwort in einem gespeichert werden könnte handhaben Secure
eine neue AppDomain erstellen und die ausführbare Datei aus dem Archiv ausführen ohne es zu extrahieren (nur die Bytecode Laden)
Die sekundäre AppDomain muss das Ereignis AssemblyResolve implementieren und immer dann, wenn sie eine Assembly laden muss; Es wird versuchen, diese Datei aus dem Archiv zu entschlüsseln.
Aber wie über die Dateien durch die Anwendung wie Bilder, eingebettete Datenbank (ex. SQLite), XMLs und andere externe Dateien benötigt? Gibt es einen anderen Weg, es zu tun?
Ist es möglich, mehrere vorhandene Dateimanipulationsklassen unter System.IO zur Laufzeit wie File und FileStream zu ändern, um innerhalb des Archivs statt Pfad relativ zum Pfad des Launcher zu schauen? Dies ist möglicherweise mit Mono.Cecil möglich, aber das Problem ist, dass es Teil von mscorlib ist und möglicherweise bereits beim Erstellen neuer AppDomain geladen wird. – eSPiYa