我想压缩和加密我的整个应用程序,可能使用Zip,7z,Bz2,Tar或任何压缩方法,并使用AES-128/256作为加密算法以达到安全目的。 然后创建一个启动器应用程序,它将处理应用程序的执行和存档的解密。
我已经知道如何实现它,但仅限于引用/库:
应用程序将使用#ZipLib处理文件的解密, 密码可能存储在一个 SecureString的
创建一个新的AppDomain并从存档中执行可执行文件 没有提取它(只是加载 字节码)
辅助AppDomain必须实现AssemblyResolve事件 并且只要它需要加载一个 部件;它会尝试解密 归档中的文件。
但是应用程序所需的文件如图像,嵌入式数据库(例如SQLite),XML和其他外部文件怎么样? 还有其他办法吗?
答案 0 :(得分:3)
文件可以在运行时加载,也不需要在设计时加载。您可以调出资源管理器并从加密区域中提取图片。这可以实现。但是需要一些时间。听起来像你在做什么在概念上是好的但是有点短。运行程序的唯一方法是以某种方式提取程序。如果您的目标是保护自己的信息,则您的启动器会泄露您的数据。通过使用.NET本身就可以暴露你正在做的事情(.NET Reflector等)。如果你的目标是让它变得困难,那么一个发射器就足够了。
请记住,一切都可以打破。