创建一个生成DLL的应用程序

时间:2015-04-27 17:09:24

标签: windows user-interface dll mfc linker

目前,我有一个针对DLL构建的MFC C ++ visual studio项目。我们称之为 FinalDLL

我需要这个 FinalDLL 才能配置。所以,我想要一个GUI,以便用户可以根据通过GUI输入的信息生成 FinalDLL 。请考虑我不想在任何时候提供这些资源。

我不清楚如何整合这些步骤。我想出的解决方案是在我的GUI中使用类似按钮的东西,这样当点击它时, FinalDLL 会根据通过GUI输入的信息生成。有可能做那样的事吗?可能我需要另一个DLL库,因为通过GUI输入的信息可以调用 FinalDLL 源中使用的函数。

1 个答案:

答案 0 :(得分:2)

解决方案将非常复杂和复杂,主要是因为您不想透露DLL的源代码。

基本上,每次要生成DLL时都需要编译这些源文件,而用户无需访问它们。

首先,对于您希望将DLL生成器应用程序分发到的用户来说,这也是必需的。

其次,您需要将这些文件存储在应用程序的某个位置,并以加密形式存储,以便黑客不仅可以查看您的应用程序二进制文件并提取DLL的源代码。

作为用户方面的先决条件,他需要安装兼容的Visual Studio,这将用于动态编译源代码文件。

DLL生成器应用程序需要做的是通过应用程序将呈现的表单即时编译这些源代码文件以及自定义文件。

所以您需要做的事情(由于复杂的要求,列表可能并不详尽):

  1. 收集Visual Studio在构建项目时执行的所有编译器/链接器命令
  2. 以加密形式将所有源代码文件存储到您的应用程序中。现在,如果您希望允许应用程序解码文件,那么您需要将加密密钥存储在应用程序中,并对其进行模糊处理以使其不易于查找,或让应用程序与您的服务器通信并请求加密密钥通过https(这是一种更安全的方法,但这不是100%防弹,坚持/训练有素的黑客仍然可以查看你的应用程序使用的内存)。
  3. 在用户填写所有DLL生成详细信息后,应用程序将需要解密源代码文件,更新受自定义参数影响的文件,并使用在步骤#1收集的命令启动构建过程。编译器/链接器应允许从stdin读取,因此您将使用管道将源代码内容写入编译器/链接器stdin,并从stdout获取已编译/链接的对象。
  4. 正如我所说,解决方案并不漂亮,主要问题是让用户安装一个Visual Studio,它带有与您机器上的编译器兼容的编译器,否则您在步骤#1收集的命令将不会工作