免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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 开发
Title:EXE文件开发:原理与详细介绍摘要:本文将详细介绍Windows下的可执行文件(EXE)的原理、开发过程及编写示例。通过本篇文章,你将了解到EXE文件背后的魔法,为你程序的开发提供基础理论支持。一、EXE文件简介EXE文件是Windows操作系
2023-06-29
自定义封装exe
自定义封装exe是指将一个程序或文件夹打包成一个独立的可执行文件(exe),以便于在其他电脑上运行,同时可以保护原始文件的安全性。这种封装方式通常用于软件开发、游戏开发、数据备份等领域。自定义封装exe的原理是将程序或文件夹打包成一个自解压缩的exe文件,
2023-04-14
把pc网站后台打包为桌面应用
将PC网站后台打包为桌面应用是一种将网站转化为桌面应用的方法。这种方法可以使得用户在不需要浏览器的情况下直接使用网站,从而更加方便。下面是将PC网站后台打包为桌面应用的原理和详细介绍。一、原理将PC网站后台打包为桌面应用的原理是通过一种叫做Electron
2023-04-14
怎么把exe打包成dmg
在Mac OS X系统中,dmg是一种常见的磁盘映像格式,类似于Windows中的ISO格式。dmg可以包含一个或多个文件,可以被挂载为一个虚拟磁盘,方便用户进行文件的安装和存储。因此,将Windows程序打包成dmg格式,可以使Mac用户更方便地使用和存
2023-04-14
如何打包应用软件
打包应用软件是将一个或多个文件打包成一个单独的文件,以便于传输、存储和使用。在软件开发中,打包应用程序是将所有文件和依赖项捆绑在一起,以便于部署到目标系统中。本文将介绍打包应用软件的原理和详细步骤。一、打包应用软件的原理打包应用软件的原理是将所有需要的文件
2023-04-14
优芽生成exe
优芽是一款在线的软件开发工具,它可以帮助用户快速生成各种类型的应用程序,包括exe文件。在使用优芽生成exe文件之前,我们需要了解一些基本原理和流程。首先,我们需要在优芽中创建一个项目,选择生成exe文件的模板。接着,我们可以在项目中添加需要的代码和资源文
2023-04-14
pc软件开发
PC软件开发是指在计算机上编写、测试和维护应用程序的过程。在PC软件开发中,开发人员需要掌握计算机编程语言、开发工具和软件工程等知识,以实现客户需求的功能。一、PC软件开发的原理PC软件开发的原理主要包括以下几个方面:1. 软件需求分析:在开发软件之前,需
2023-04-14
pc端exe程序开发
PC端exe程序开发是指在Windows操作系统上开发可执行文件的过程。可执行文件是一种独立的程序,可以在Windows上运行,而不需要其他软件的支持。一般情况下,PC端exe程序开发需要使用编程语言和开发工具。常用的编程语言有C++、C#、Java等,常
2023-04-14
exe打包器
EXE打包器是一种软件工具,可以将多个文件和资源打包成一个独立的可执行文件,方便用户进行分发、安装和运行。EXE打包器的原理是通过将多个文件和资源进行压缩、加密和封装,使其成为一个独立的可执行文件,具有自我解压和自我安装的功能。EXE打包器通常包括以下几个
2023-04-14
exe开发框架
Exe开发框架是一种用于快速开发Windows桌面应用程序的框架。该框架提供了一些常用的功能模块,如窗口管理、消息处理、菜单、对话框、控件等,使得开发者可以更加专注于业务逻辑的实现,从而提高开发效率。Exe开发框架的核心是基于Windows API的封装和
2023-04-14
exe合成网页
将一个可执行文件(exe)合成一个网页(HTML)可以让用户更方便地访问和使用程序。在这篇文章中,我们将介绍exe合成网页的原理和详细步骤。原理exe合成网页的原理是将一个可执行文件嵌入到一个HTML文件中,使得用户可以通过浏览器访问该文件来执行程序。具体
2023-04-14
网站打包exe桌面软件更换logo图标更改桌面图标
网站打包exe桌面软件更换logo图标更改桌面图标在实际运营途中,我们都可能会更换软件的LOGO通过一门开发平台将网站打包成exe的桌面软件怎么更换图标呢?1.登录一门开发者中心,找到需要配置的桌面软件如图,点击左侧导航我的桌面应用,在应用列表里面找到需要
2022-02-15
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4