Voglio comprimere e crittografare la mia intera applicazione, magari con Zip, 7z, Bz2, Tar, o qualsiasi metodo di compressione e utilizzando AES-128/256 come algoritmo di crittografia per motivi di sicurezza. Quindi creare un'applicazione di avvio che gestirà l'esecuzione dell'applicazione e la decrittografia dell'archivio.Esecuzione dell'applicazione all'interno di un file di archivio senza estrazione
Ho già un'idea su come raggiungerlo, ma con solo riferimenti/librerie:
L'applicazione consente di gestire la decrittazione del file utilizzando #ZipLib, la password potrebbe essere conservato all'interno di un SecureString
Creare un nuovo dominio di applicazione ed eseguire il file eseguibile dall'archivio senza estrarlo (basta caricare il bytecode)
L'AppDomain secondario deve implementare l'evento AssemblyResolve e ogni volta che è necessario caricare un assembly ; proverà a decifrare il file dall'interno dell'archivio.
Ma che dire dei file necessari per l'applicazione come immagini, database incorporato (ad esempio SQLite), XML e altri file esterni? C'è qualche altro modo per farlo?
È possibile modificare diverse classi di manipolazione di file esistenti in System.IO in fase di runtime come File e FileStream per cercare all'interno dell'archivio anziché il percorso relativo al percorso del programma di avvio? Questo potrebbe essere possibile con Mono.Cecil ma il problema è che fa parte di mscorlib e potrebbe essere già caricato alla creazione del nuovo AppDomain. – eSPiYa