免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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
exe4j把jre打包使用教程
exe4j是一个非常实用的Java应用程序打包工具,它可以帮助我们将Java应用程序打包成Windows平台下的 실행文件(.exe)。通过这种方式,我们可以让Java程序在Windows系统上具有更好的兼容性,简化用户的使用过程。下面,我们将详细介绍如何
2023-04-27
delphi制作exe文件
Delphi编程语言是一种面向对象的Pascal编程语言,它允许开发者在Windows平台上进行应用程序开发。通过使用Delphi,您可以轻松地创建高效、美观的应用程序,并将其编译为独立的EXE文件,以便在没有Delphi的环境下运行。在本教程中,我们将介
2023-04-27
用html开发exe
在传统的软件开发中,通常使用编程语言如C++、Java等来编写可执行文件(exe文件),然后通过编译器将代码转换成机器码,最终生成可执行文件。但是,使用HTML开发exe文件是不可能的,因为HTML是一种标记语言,它只能用于网页开发。然而,有一种技术可以让
2023-04-14
文件打包
文件打包是指将多个文件或文件夹打包成一个文件,以便于传输、备份、存储等操作。在计算机领域,文件打包通常使用压缩算法将文件压缩成一个压缩包,以减少文件的体积和传输时间。文件打包是计算机基础操作之一,本文将为您介绍文件打包的原理和详细介绍。一、文件打包的原理文
2023-04-14
把exe变成服务
将EXE文件转换为服务可以使其在Windows操作系统上作为后台进程运行,无需用户登录或交互。这是一种非常有用的技术,特别是对于需要在Windows服务器上运行的应用程序。在本文中,我们将介绍将EXE文件转换为服务的原理和详细步骤。原理Windows操作系
2023-04-14
开发一款exe软件
开发一款exe软件,需要掌握软件开发的基础知识和技术,包括编程语言、开发工具、软件架构等方面。下面将从这些方面介绍开发一款exe软件的原理和步骤。一、编程语言选择在开发exe软件时,需要选择一种合适的编程语言。常用的编程语言包括C++、C#、Java等。不
2023-04-14
封装组件库软件
封装组件库软件就是将常用的UI组件封装成一个库,让开发者可以直接调用这些组件,从而提高开发效率和代码质量。这种软件通常包含了各种常见的UI组件,比如按钮、输入框、下拉菜单、弹窗等等。在开发过程中,开发者可以直接引用这些组件,而不需要再去手写代码实现这些功能
2023-04-14
x86打包exe
x86打包exe,也可以称作x86编译成exe,是指将x86汇编语言编写的程序打包成可执行文件(exe)的过程。这个过程需要用到汇编器和链接器两个工具。汇编器是将汇编语言转换为机器语言的工具,它将我们编写的汇编代码转换为可执行文件中的指令。在x86架构中,
2023-04-14
ubuntu开发环境
Ubuntu是一种基于Debian Linux操作系统的开源软件,特点是易于使用、免费、开放源代码和安全性高。它是开发者和研究人员最常用的操作系统之一,因为它提供了一个稳定的开发环境,可以在其中运行各种开发工具和语言,如Python、Java、C++等等。
2023-04-14
php项目打包exe
PHP是一种非常流行的服务器端脚本语言,它被广泛应用于Web开发领域。PHP可以运行在各种不同的操作系统上,包括Windows、Linux和Mac OS等等。在某些情况下,我们可能需要将PHP项目打包成可执行文件(exe),以便在没有安装PHP解释器的计算
2023-04-14
exe文件封装打包
EXE文件封装打包是将一个或多个文件和程序代码打包成一个可执行的EXE文件,从而方便用户在不需要安装的情况下直接运行程序。这种技术通常被用于制作绿色软件、便携程序和自解压缩包等应用场景。EXE文件封装打包的原理是将需要打包的文件和程序代码转换成二进制数据,
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4