免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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 文件是可执行文件(可执行程序)的扩展名,主要在 Microsoft Windows 平台上使用。它由编程语言编写的源代码经过编译、链接(或者叫打包)、生成的可直接运行的程序文件。用户通过双击 exe 文件或在命令行中输入文件名来
2023-04-27
exe安装打包工具
在本篇文章中,我们将详细讨论EXE安装打包工具。作为一个互联网领域的人员,你可能经常需要将自己的应用程序、软件或者其他互动工具打包成一个方便用户安装的EXE文件。在这里,我们将探讨几个常用的EXE安装打包工具,它们的原理以及如何使用它们。首先,简单了解一下
2023-04-27
exe制作包工具
标题:EXE制作包工具:原理与详细介绍当我们需要创建一个可执行文件(.exe 文件)或安装程序时,就需要借助EXE制作包工具。本篇文章将为您详细介绍EXE制作包工具的原理和使用。EXE制作包工具主要用于把开发的应用程序、游戏或者工具编译成可执行文件,方便用
2023-04-27
exe做文件
**标题:了解.exe文件:原理与详细介绍**从计算机早期的日子开始,文件扩展名就是为了告诉操作系统和用户文件的类型。在Windows环境中,`.exe`是一种特殊的文件扩展名,代表可执行文件。这些文件可以在计算机上运行各种程序,包括游戏、实用程序和常见应
2023-04-27
dosbox怎么编译生成exe
在本教程中,我们将介绍如何使用DOSBox编译生成可执行文件 (exe)。DOSBox是一个开源的MS-DOS模拟器,允许你在现代操作系统上运行旧的DOS应用程序。这意味着你可以在DOSBox中运行旧的编译器来创建可执行文件。下面我们将展示使用Borlan
2023-04-27
debug不生成exe
Debug 模式是在开发过程中创建的程序版本,它包含有关程序执行和错误的详细诊断信息。而Release 模式是为了在发布软件时使用更小、速度更快的程序版本。当你使用Debug模式编译一个应用程序时,通常是因为你想进行调试,并不是为了发布最终产品。所以,在这
2023-04-27
c语言生成exe文件
在C语言中生成一个可执行的EXE文件,需要经过几个阶段:编写源代码,预处理,编译,汇编,和链接。在这个过程中,源代码文件会被转换为机器可以理解和执行的二进制代码。下面是一个详细的介绍:1. 编写源代码:首先,你需要使用任何文本编辑器或者集成开发环境(IDE
2023-04-27
c语言修改生成的exe名称
在C语言中,生成的可执行文件(.exe)的名称通常与程序的源代码文件名称相同,并且默认为 "a.exe"。但有时我们可能想要修改生成的可执行文件的名称。这可以通过使用编译器的命令行选项或修改项目设置来实现。本文将详细介绍如何在Windows中使用GCC和V
2023-04-27
cs文件如何生成exe
在本教程中,我们将向您介绍如何将C#源代码文件(扩展名为.cs)编译成可执行文件(扩展名为.exe)的过程。我们将首先了解编译器原理,然后提供一个简单的示例及详细的步骤来生成.exe文件。**一、原理**当我们编写C#源代码并希望将其转换为可执行文件时,需
2023-04-27
重新封装exe
重新封装exe是指将一个已经存在的exe文件重新打包成一个新的exe文件,通常是为了更改其外观、添加一些自定义功能或者隐藏其真实用途。这种技术在某些情况下非常有用,比如说开发商想要保护自己的软件不被破解或者滥用,或者想要为用户提供一个更加个性化的软件体验。
2023-04-14
将网页程序打包成exe
将网页程序打包成exe是一种将网页应用程序转化为桌面应用程序的方法。它可以将网页应用程序转化为独立的可执行文件,用户可以在没有网络连接的情况下访问它们。本文将介绍将网页程序打包成exe的原理和详细步骤。一、原理将网页程序打包成exe的原理是将网页程序中的H
2023-04-14
windowslive2012软件包
Windows Live 2012 是一个免费的软件套件,由微软开发和发布。它包含了一系列的应用程序,包括电子邮件客户端、聊天应用、照片管理工具、电影制作软件和博客编辑器等。这些应用程序都是为了帮助用户更方便地管理和分享自己的数字内容而设计的。Window
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4