在没有提取的情况下在归档文件中执行Application

时间:2010-07-16 15:39:00

标签: .net file mono encryption

我想压缩和加密我的整个应用程序,可能使用Zip,7z,Bz2,Tar或任何压缩方法,并使用AES-128/256作为加密算法以达到安全目的。 然后创建一个启动器应用程序,它将处理应用程序的执行和存档的解密。

我已经知道如何实现它,但仅限于引用/库:

  • 应用程序将使用#ZipLib处理文件的解密, 密码可能存储在一个 SecureString的

  • 创建一个新的AppDomain并从存档中执行可执行文件 没有提取它(只是加载 字节码)

  • 辅助AppDomain必须实现AssemblyResolve事件 并且只要它需要加载一个 部件;它会尝试解密 归档中的文件。

但是应用程序所需的文件如图像,嵌入式数据库(例如SQLite),XML和其他外部文件怎么样? 还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

文件可以在运行时加载,也不需要在设计时加载。您可以调出资源管理器并从加密区域中提取图片。这可以实现。但是需要一些时间。听起来像你在做什么在概念上是好的但是有点短。运行程序的唯一方法是以某种方式提取程序。如果您的目标是保护自己的信息,则您的启动器会泄露您的数据。通过使用.NET本身就可以暴露你正在做的事情(.NET Reflector等)。如果你的目标是让它变得困难,那么一个发射器就足够了。

请记住,一切都可以打破。