免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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
将一个网站网址打包成exe文件,可以让用户在没有网络的情况下依然能够访问该网站。这样的功能在某些场景下非常有用,比如在没有网络的地方需要查看网站上的内容。下面将介绍将网站网址打包成exe文件的原理和详细步骤。一、原理将网站网址打包成exe文件的原理是将网站
2023-04-14
电脑端软件开发
电脑端软件开发是指开发针对计算机操作系统的应用程序,例如 Windows、MacOS、Linux 等。它们可以是桌面应用程序、系统工具、游戏等等。在本文中,我们将详细介绍电脑端软件开发的原理和流程。一、软件开发的原理1.1 软件开发生命周期软件开发生命周期
2023-04-14
比较好的打包工具
打包工具是一种将多个文件或文件夹打包成一个文件的工具,它能够方便地将多个文件或文件夹整合在一起,方便传输、备份和分享。在实际的工作中,打包工具被广泛应用于软件开发、文件传输、备份等领域。下面将介绍几款比较好的打包工具及其原理或详细介绍。1. WinRARW
2023-04-14
开发exe用什么软件
开发exe文件是指将某个程序打包成可执行文件,以便于用户直接运行程序。通常情况下,开发exe文件需要使用一种集成开发环境(IDE)或编译器。下面我会详细介绍一些比较常用的软件和原理。1. Visual StudioVisual Studio是微软公司推出的
2023-04-14
将网页封装到exe
将网页封装到exe是指将一个网页文件夹打包成一个可执行文件(exe)的过程。这个过程可以使网页更加方便地分享和使用,特别是在没有网络连接或者需要离线使用的情况下。下面,我们将介绍两种常见的将网页封装到exe的方法和原理。一、使用网页封装软件目前市面上有很多
2023-04-14
如何打包应用程序
打包应用程序是将应用程序的各个组成部分打包在一起,以便于部署和使用。在应用程序开发中,打包是一个非常重要的环节,它决定了应用程序能否顺利地运行和被用户使用。本文将介绍打包应用程序的原理和详细步骤。一、打包应用程序的原理打包应用程序的原理是将应用程序的各个组
2023-04-14
如何将网页封装成exe
将网页封装成exe,是一种将网页文件打包成可执行文件的方法,这样用户可以不需要安装浏览器,直接运行exe文件即可访问网页。本文将介绍如何将网页封装成exe以及其原理。一、网页封装成exe的原理封装网页成exe的原理是将网页文件打包成可执行文件,使其具有独立
2023-04-14
如何将一个地址打包成exe
将一个地址打包成exe,是一种将软件和数据打包成一个可执行文件的方式,使得用户可以直接运行软件,而无需安装和配置环境。这在软件发布和分发中非常方便,因为用户可以直接下载并运行,而不必担心环境问题和配置问题。下面我来详细介绍一下如何将一个地址打包成exe的原
2023-04-14
如何将page打包成exe
将page打包成exe的主要原理是将页面文件和相关的资源文件打包成一个可执行文件,这个可执行文件可以直接运行在Windows操作系统上,无需依赖浏览器等其他软件。下面我将详细介绍如何将page打包成exe。1. 准备工作首先需要准备好需要打包的页面文件和相
2023-04-14
前端进行应用开发
前端应用开发是指利用前端技术,如HTML、CSS和JavaScript等,来创建Web应用程序。在这个过程中,前端开发人员需要掌握许多技术,并且需要具备一定的设计能力。以下是关于前端应用开发的原理和详细介绍。一、前端应用开发的原理1. HTMLHTML是一
2023-04-14
傻瓜式win桌面软件开发
Win桌面软件开发是一项非常有用的技能,它可以帮助你创建各种桌面应用程序,包括日历、笔记本、图像编辑器等。虽然这些应用程序看起来很复杂,但是使用一些简单的工具和技术,你也可以轻松地编写自己的Win桌面软件。本文将介绍如何使用.NET框架和C#编程语言来创建
2023-04-14
exe程序开发
EXE程序开发是指将源代码编译成可执行文件的过程。EXE程序是Windows系统下的可执行文件格式,可以在Windows操作系统上运行。EXE程序开发需要掌握编程语言、编译器和开发工具等知识,下面我们来详细介绍一下EXE程序开发的原理和步骤。一、编程语言编
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4