windows - 创建生成 DLL 的应用程序

标签 windows user-interface dll mfc linker

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

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

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

最佳答案

这个的解决方案会很复杂很复杂,主要是你不想泄露DLL的源代码。

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

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

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

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

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

那么您需要做什么(由于要求复杂,列表可能并不详尽):

  1. 收集 Visual Studio 在构建项目时执行的所有编译器/链接器命令
  2. 将所有源代码文件以加密形式存储到您的应用程序中。现在,如果你想让你的应用程序解码文件,那么你需要将加密 key 存储在应用程序中,并对其进行混淆处理,这样它就不容易找到,或者让应用程序与你的服务器通信并请求加密 key 通过 https(这是一种更安全的方法,但这也不是 100% 防弹的,坚持/训练有素的黑客仍然可以窥视您的应用程序使用的内存)
  3. 在用户填写所有 DLL 生成详细信息后,应用程序将需要解密源代码文件,更新受自定义参数影响的文件,并使用在步骤 #1 中收集的命令启动构建过程。编译器/链接器应该允许从 stdin 读取,因此您将使用管道将源代码内容写入编译器/链接器 stdin,并从 stdout 获取编译/链接的对象。

正如我所说,解决方案并不完美,主要问题是让用户安装一个 Visual Studio,它附带一个与您机器上的编译器兼容的编译器,否则您在步骤 #1 中收集的命令将不会工作。

关于windows - 创建生成 DLL 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901959/

相关文章:

windows - Git 推送到 Windows 共享失败

windows - 构建 DLL 时;我应该链接到什么类型的 CRT?

c++ - 将 char 数组添加到 LoadLibrary

c++ - VBA 无法找到我的 DLL,尽管对位置进行了硬编码。

java - Window JPanel 是透明的吗?

class - 定义 Canvas 绘制上下文的自定义方法

windows - 是否可以从 Cygwin ssh session 正确执行 qwinsta?

c++ - 不要在发布时显示控制台窗口但在调试时显示

windows - 远程 OpenSCManager 失败,访问被拒绝

iOS Swift - 设计类 HTML 表格的有效方法