免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持APP、电脑端、小程序、IOS免签等等

dll中封装exe并运行exe

在 Windows 操作系统中,DLL(Dynamic Link Library,动态链接库)是一种存储可被多个程序同时使用的代码和数据的库。EXE(可执行文件)是 Windows 中直接运行的程序。尽管它们有许多相似之处,但有时我们希望在 DLL 中封装一个 EXE 文件,并在需要的时候启动该 EXE。这篇简明教程将带你了解如何实现封装及运行的过程。

原理:

1. 封装 EXE:要将一个 EXE 文件封装到一个 DLL 中,首先需要将 EXE 文件作为资源添加到 DLL 工程中。接着,通过调用资源 API 函数(例如 LoadResource 和 LockResource),可以在运行时从 DLL 中提取 EXE 文件。

2. 运行 EXE:一旦从 DLL 中提取出 EXE 文件,就可以将其写入临时文件并运行。这可以通过使用函数(如 CreateFile、WriteFile 和 CreateProcess)实现。

以下是实现 EXE 封装和运行的详细步骤:

步骤 1:创建 DLL 工程

在 Visual Studio 或其他您喜欢的 C/C++ 编译环境中创建一个新的 DLL 工程。

步骤 2:将 EXE 文件添加为资源

1. 在工程资源文件中创建一个新的资源类型(例如,使用标识符 “BIN”)。

2. 将 EXE 文件添加为新资源类型的实例。

3. 为该资源分配唯一的资源 ID(例如,“IDR_EXE1”)。

步骤 3:从 DLL 提取 EXE 文件

1. 调用 `FindResource` 函数来定位 EXE 资源。

2. 使用 `LoadResource` 函数加载 EXE 资源。

3. 使用 `LockResource` 函数获取 EXE 数据的指针。

4. 使用 `SizeofResource` 函数获取 EXE 数据的大小。

步骤 4:将 EXE 保存到临时文件

1. 使用 `GetTempPath` 和 `GetTempFileName` 函数创建一个临时文件。

2. 使用 `CreateFile` 函数创建(或覆盖)该临时文件。

3. 将从 DLL 中提取的 EXE 数据写入临时文件。

4. 使用 `CloseHandle` 函数关闭临时文件。

步骤 5:运行临时 EXE 文件

1. 使用 `CreateProcess` 函数创建一个新的进程来运行临时 EXE 文件。

2. 等待新进程结束。可以选择性地设置一段超时时间,以防 EXE 文件运行过久。

3. 使用 `CloseHandle` 函数清理进程和线程句柄。

以下是一个简化的代码实例:

```cpp

#include

#include

#include "resource.h"

bool ExtractAndRunEXE()

{

HRSRC hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_EXE1), _T("BIN"));

if (!hRes)

return false;

HGLOBAL hResData = LoadResource(NULL, hRes);

if (!hResData)

return false;

LPVOID pExeData = LockResource(hResData);

DWORD dwExeSize = SizeofResource(NULL, hRes);

TCHAR szTempPath[MAX_PATH];

TCHAR szTempFile[MAX_PATH];

GetTempPath(MAX_PATH, szTempPath);

GetTempFileName(szTempPath, _T("DLL_EXE"), 0, szTempFile);

HANDLE hFile = CreateFile(szTempFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)

return false;

DWORD dwWritten = 0;

WriteFile(hFile, pExeData, dwExeSize, &dwWritten, NULL);

CloseHandle(hFile);

STARTUPINFO si = { 0 };

PROCESS_INFORMATION pi = { 0 };

si.cb = sizeof(si);

CreateProcess(szTempFile, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);

WaitForSingleObject(pi.hProcess, INFINITE);

CloseHandle(pi.hProcess);

CloseHandle(pi.hThread);

DeleteFile(szTempFile);

return true;

}

```

当需要运行封装的 EXE 时,只需从外部调用 `ExtractAndRunEXE` 函数即可。这种方法可以隐藏 EXE 的位置和名称,使得潜在的恶意软件更难以找到和利用这些可执行文件。

注意:本方法用于合法的目的,例如在多程序共用的情况下优化代码资源。对于恶意用途(如隐藏病毒程序)的行为,本文作者概不负责。谢谢!


相关知识:
angular生成exe安装
在本文中,我们将学习如何将Angular应用程序打包成一个可执行的EXE文件。Angular作为一种流行的前端框架,通常用于构建Web应用程序。然而,有些时候我们可能需要将其部署为桌面应用程序。为了实现这一点,我们将使用Electron,它是一个允许使用w
2023-06-29
exe文件打包工具哪个好
对于EXE文件打包工具,有很多不错的选择。在这里,我将为你介绍三个最受欢迎的EXE文件打包工具,包括它们的原理、使用方法以及优缺点。了解这些信息后,你可以自己判断哪个工具最适合你的需求。1. Inno SetupInno Setup是一款开源的软件安装包制
2023-04-27
exe安装打包
标题:EXE安装打包:原理与详细介绍摘要:本文将介绍EXE安装打包的原理与详细介绍,为读者提供一个完整的指南,帮助他们更好地理解EXE安装文件及其创建过程。正文:EXE安装打包,即将一个或多个程序文件、数据文件、配置文件及相关资源组织成一个可执行的安装程序
2023-04-27
exe做成服务
在某些情况下,我们可能需要将自己编写的可执行程序 (.exe 文件) 转换为 Windows 服务。将 .exe 文件 设置为 Windows 服务后,该程序可以作为系统自动启动的服务,在后台自动运行并提供相应的服务功能。本教程将详细介绍如何将 .exe
2023-04-27
软件替换文件打包exe工具
软件替换文件打包exe工具是一种常用的软件打包工具,它可以将软件程序及其所需文件打包成一个可执行文件,方便用户在不安装的情况下直接使用软件。其原理是将软件程序及其所需文件打包成一个自解压缩文件,用户只需运行该文件即可自动解压并安装软件。该工具的使用非常简单
2023-04-14
软件打包软件a
软件打包是指将一个或多个程序文件、数据文件、配置文件等相关文件打包成一个单独的可执行文件,使得用户可以方便地安装、使用和卸载该软件。打包软件可以大大简化软件的安装和卸载过程,减少用户的烦恼和出错率,同时也可以保护软件的版权和知识产权。软件打包的原理主要涉及
2023-04-14
网页打包exe内置谷歌
网页打包exe内置谷歌是一种将网页应用程序打包成可执行文件并内置谷歌浏览器的技术。这种技术可以让用户不需要安装浏览器就可以直接运行网页应用程序,同时也可以提高用户的使用体验。打包网页应用程序的工具有很多,比如Electron、NW.js等。其中,Elect
2023-04-14
条幅制作软件
条幅制作软件是一种可以帮助用户快速制作各种形式的横幅和标语的计算机程序。它通常提供了丰富的模板、字体和图片素材,以及各种编辑和排版工具,使用户可以轻松地创建出具有吸引力和创意的横幅和标语。条幅制作软件的原理是基于计算机图形设计技术和排版技术。它利用计算机的
2023-04-14
把网页打包成exe程序
将网页打包成可执行程序(exe)是一种将网页转换成本地应用程序的方法。这种方法可以让用户在没有网络连接的情况下访问网页,并且可以更好地保护网页的内容。在本文中,我们将介绍如何将网页打包成exe程序以及原理。一、打包工具首先,我们需要选择一款网页打包工具。现
2023-04-14
windows文件打包成exe
在Windows操作系统中,我们经常会遇到需要将多个文件打包成一个可执行文件(exe)的情况,这样可以方便地进行传输和共享。本文将介绍Windows文件打包成exe的原理和详细步骤。一、原理Windows文件打包成exe的原理是将多个文件压缩成一个可执行文
2023-04-14
html5转换exe
HTML5是一种用于网站开发的标准,它可以用来创建各种类型的网站,包括游戏、应用程序和交互式教育课程等。HTML5的一个重要特性是它支持跨平台,这意味着开发人员可以使用HTML5创建一次,然后在多个设备和平台上运行。虽然HTML5可以在多个设备和平台上运行
2023-04-14
exe转换器
EXE转换器是一种可以将EXE文件转换为其他格式的工具。它的原理是将EXE文件中的二进制代码转换为其他格式的二进制代码,例如将EXE文件转换为DLL文件或OCX文件。这种转换可以实现一些特殊的需求,例如将应用程序中的某些功能封装成DLL文件,以供其他应用程
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4