免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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)是一种常见的文件格式。它们包含程序运行所需的二进制代码和其他信息。当用户执行这些文件时,计算机上的操作系统将运行程序。那么如何判断一个可执行文件是用哪门编程语言编写的呢?本文将对此进行原理和详细介绍。1. 原理简介确定
2023-04-27
exe文件如何制作软件
在这篇文章中,我们将详细了解什么是exe文件,以及如何制作一个exe文件。了解这些原理和细节将有助于你从头制作一个简单的软件应用程序。首先,exe文件是什么?在Windows操作系统中,exe文件是可执行文件(executable file),它们是计算机
2023-04-27
executive是做什么的
Executives是指企业高管,通常负责管理和指导公司的战略发展。普遍来说,Executives在组织中具有很高的责任和权力。在此我们详细介绍一下Executives的核心职责以及他们在企业中的作用。首先,我们需要了解到,不同公司的Executives可
2023-04-27
delphi 打包exe程序
Delphi是一种市面上常用的编程软件,用于创建各种桌面应用程序。它使用Embarcadero的Object Pascal编程语言,具有强大的功能和丰富的组件库。通过对应用程序进行编译和链接,Delphi可以生成一个独立的EXE文件,使其可以在Window
2023-04-27
bat文件生成exe图形界面
在本文中,我们将介绍如何将 bat(批处理)文件转换成 exe(可执行)文件,并为生成的 exe 文件创建简单的图形用户界面(GUI)。这主要有助于提高用户友好性以及方便在许多场景下使用。### 为什么要将 bat 转换为 exe?1. 提高用户友好性:许
2023-04-27
电脑端开发
电脑端开发是指在计算机上进行软件开发的过程,主要是针对桌面应用程序的开发。桌面应用程序是指安装在电脑本地的软件,与网页应用程序不同。与网页应用程序相比,桌面应用程序具有更高的性能和更好的用户体验,因为它们可以直接访问本地硬件和操作系统。电脑端开发通常需要掌
2023-04-14
做电脑软件
电脑软件是指运行在计算机上的程序或应用程序。它们是由程序员编写的一组指令,用于实现某种特定的功能或任务。电脑软件可以分为系统软件和应用软件两类。系统软件是指运行在计算机操作系统上的软件,它们与计算机硬件直接交互,提供基础服务和支持,使计算机能够正常运行。系
2023-04-14
pro文件生成exe文件
在Qt中,我们可以使用.pro文件来管理我们的项目,而.pro文件中包含了一些项目的配置信息和依赖关系,这些信息可以帮助我们生成可执行文件。下面将详细介绍.pro文件生成exe文件的原理。首先,我们需要了解.pro文件的结构和内容。一个典型的.pro文件通
2023-04-14
html打包成exe程序
将HTML文件打包成可执行文件(exe)的主要目的是为了方便用户使用,用户不需要安装任何浏览器或其他软件来运行HTML文件,只需双击可执行文件即可。下面我们来介绍一下如何将HTML文件打包成exe程序的原理和步骤。## 原理将HTML文件打包成exe程序的
2023-04-14
exe软件生成器
一个exe软件生成器是一种能够将一个项目转换为可执行文件的工具,它通常用于将源代码转换为可分发的应用程序。exe软件生成器的主要功能是将源代码编译成可执行文件,同时还可以执行其他任务,如压缩文件,加密文件和创建安装程序等。在本文中,我们将详细介绍exe软件
2023-04-14
exe打包工具升级
在软件开发领域中,exe打包工具是一个非常重要的工具,它可以将程序打包成一个可执行文件,方便用户直接运行。随着技术的不断进步,exe打包工具也在不断升级和优化。本文将从原理和详细介绍两个方面来介绍exe打包工具的升级。一、原理exe打包工具的升级原理主要包
2023-04-14
exe壳网址
exe壳是一种将可执行文件进行加密或压缩的工具,也称为“软件保护壳”或“软件加壳”。它通过将原始的可执行文件嵌入到壳程序中,并在运行时将其解压或解密,以保护程序不被破解或盗版。exe壳的主要作用是保护软件的知识产权和商业利益。exe壳的原理是将可执行文件加
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4