如何在 VB 程序中从内存中 read/execute NSIS 脚本

How to read/execute NSIS script from memory in VB program

我有一个 VB.NET 应用程序,它本质上是 NSIS 脚本的前端。使用命令行上给出的所有文件和变量调用该脚本。该应用程序的目的是在个人计算机上搜索和查找这些文件,然后格式化命令行并调用 NSIS 脚本来创建安装程序。

我希望能够分发此程序并保护 NSIS 脚本源代码。我正在寻找的是一种从应用程序内存中 "read" 脚本的方法。我的想法是脚本的内容将保存在应用程序内部,然后在需要时可以加载和调用脚本,而无需实际将其写入用户计算机。

这可能吗?如果是这样,我应该寻找什么来完成它。我不需要一步一步来(并不是说你可以提供这样一个骨架轮廓)只是 VB 中的主要概念或功能是什么可以让我做到这一点。

我假设您使用的是官方 NSIS 编译器而不是自定义 .dll 版本?如果是这种情况,那么有人可以将 makensis.exe 替换为将 stdin 写入文件的内容。 NSIS 3 还支持将预处理脚本转储到 stdout 或文件,因此如果您允许用户修改传递给 makensis 的开关,那么这将是恢复大部分脚本的简单方法。

即使我们将 NSIS 排除在等式之外,您也会遇到难以解决的问题。我建议你只用一个简单的 XOR 密码加密脚本,这应该阻止大多数人只是在十六进制编辑器中查看你的 .exe。如果你愿意,当然可以使用 stronger encryption

当您要调用 makensis 时,您会 retrieve the encrypted script resource as a memory stream or array, decrypt it and then pass it as the stdin for makensis by using ProcessStartInfo.RedirectStandardInput...