免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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 的位置和名称,使得潜在的恶意软件更难以找到和利用这些可执行文件。

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


相关知识:
exe转apk生成器手机版
在这篇文章中,我们将详细讨论EXE转APK生成器手机版,包括它的原理、功能以及如何使用。EXE转APK生成器手机版是一款将Windows程序转换成适用于Android平台的应用文件的工具。在本篇文章的最后,你将能了解到EXE转APK的转换过程以及你需要注意
2023-04-27
exe文件做实验
# 实验讲解:Windows下的EXE文件EXE文件是Windows操作系统下可执行文件的扩展名。这种文件主要包含了计算机程序将执行的指令和代码,通常用于安装、运行应用程序和实现不同的计算机功能。在本实验中,我们将向您介绍EXE文件的基本原理、结构和一些关
2023-04-27
exe4j打包lib
exe4j 是一个可以将 Java 应用程序打包成 Windows 可执行文件 (.exe 文件) 的工具。有了这个工具,你无须为用户执行 Java 应用程序安装 Java 运行时环境 (JRE),因为 exe4j 提供了集成 Java 运行时环境的选项,
2023-04-27
项目打包exe
在软件开发中,打包成可执行文件是一个非常重要的步骤。这个过程也被称为编译。打包成可执行文件可以使软件更加方便地被用户使用,同时也可以在不同的操作系统上运行。在本文中,我们将介绍打包成可执行文件的原理和详细过程。一、打包成可执行文件的原理打包成可执行文件的原
2023-04-14
软件打包的封装格式
软件打包的封装格式是指将一个或多个软件文件打包成一个整体,以便于用户安装、卸载或运行软件。封装格式一般包括安装程序、配置文件、库文件、资源文件等。不同的封装格式有不同的特点和优缺点,下面将对常见的软件封装格式进行介绍。1. Windows Installe
2023-04-14
系统封装软件打包工具
系统封装软件打包工具是一种用于将应用程序打包成可执行文件或者安装包的工具。这种工具可以将应用程序、库文件、配置文件等打包成一个整体,方便用户快速安装和使用。下面将详细介绍系统封装软件打包工具的原理和常用的工具。系统封装软件打包工具的原理系统封装软件打包工具
2023-04-14
打包网站
打包网站,也叫做网站打包或者网站压缩,是将一个网站的所有文件和资源打包成一个压缩文件的过程。通常情况下,打包网站是为了备份、迁移或者分享网站。打包网站的原理是将网站的所有文件和资源压缩成一个文件,以减小文件大小,方便备份、迁移或者分享。在打包网站的过程中,
2023-04-14
将一个程序打包成一个exe
在软件开发中,将程序打包成一个exe文件是一种常见的做法,这样可以方便用户直接运行程序而无需安装额外的依赖项。下面将介绍如何将一个程序打包成一个exe文件。首先,需要使用一种叫做“打包工具”的软件来完成这个任务。常见的打包工具有PyInstaller、cx
2023-04-14
如何制作exe文件
制作exe文件是一项比较基础的计算机技能,它可以将一些可执行程序打包成一个独立的可执行文件,便于其他人在不安装开发环境的情况下直接运行。本文将介绍exe文件的制作原理及详细步骤。一、制作exe文件的原理exe文件是Windows操作系统下的一种可执行文件格
2023-04-14
html网页打包exe
将HTML网页打包成可执行文件(EXE)是一种将网页转换为本地应用程序的方法,这种应用程序可以在没有互联网连接的情况下使用。这种方法可以提高网页的安全性和保密性,同时也可以方便用户访问,不需要打开浏览器并输入网址。下面将介绍HTML网页打包成EXE的原理和
2023-04-14
exe软件打包
EXE软件打包是将程序文件和相关资源文件打包成一个可执行的程序文件的过程。这个过程可以简化软件的安装和使用,让用户可以直接运行软件,而不需要安装和配置各种依赖项。EXE软件打包的原理是将程序文件和相关资源文件打包成一个可执行的程序文件,这个程序文件包含了所
2023-04-14
桌面应用快速开发框架优点缺点说明
使用桌面应用快速开发框架的优点有:节省时间:桌面应用快速开发框架可以让开发者在较短的时间内完成一个完整的桌面应用,而不需要从零开始构建每一个组件和功能。提高质量:桌面应用快速开发框架可以让开发者利用已经经过测试和优化的界面元素、编程语言、数据处理方式等,来提高自己的应用的质量和性能。降低难度:桌面应用快速开发框架可以让开发者使用自己熟悉和喜欢的语言和工具来开发应用,而不需要学习和掌握太多的新技术和知识。
2023-04-03
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4