免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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 的位置和名称,使得潜在的恶意软件更难以找到和利用这些可执行文件。

注意:本方法用于合法的目的,例如在多程序共用的情况下优化代码资源。对于恶意用途(如隐藏病毒程序)的行为,本文作者概不负责。谢谢!


相关知识:
bat 做成exe
标题:将BAT文件转换为EXE文件的原理及详细介绍**原理与背景**BAT文件,又叫批处理文件,在Windows操作系统中被用来执行命令行命令的脚本。用户通过一个简单的文本编辑器,如记事本,可以创建和编辑BAT文件。然而,BAT文件的功能有限,同时存在安全
2023-06-29
exe程序用什么语言开发
一个exe文件,即可执行文件(executable file),是一种在Microsoft Windows操作系统中运行的程序。exe程序可以使用多种编程语言进行开发,其中最常见的有C、C++、C#、Java、Python等。以下将详细说明使用C++作为例
2023-04-27
exe程序怎么生成的
在计算机编程领域,一个EXE文件是一个可执行文件,它是一种特殊类型的文件,可以在Windows操作系统中运行,进行各种任务和程序操作。EXE文件的生成过程包括多个步骤,主要包括编写代码、编译、链接和运行。接下来,我将详细阐述EXE程序的生成原理。1. 编写
2023-04-27
exe文件无法二次打包
标题:为什么EXE文件无法二次打包?——从原理和技术细节进行解析【摘要】EXE文件是计算机程序可执行文件的一种格式,通常包含着程序的二进制代码、资源和依赖链接等信息。尽管技术上可以通过分析和修改EXE文件,实现二次打包,但实际上这非常困难。本文将详细阐述为
2023-04-27
dos下生成exe
在DOS(磁盘操作系统)下生成一个可执行文件(.exe)涉及到在命令行界面上使用汇编程序进行编写、编译和链接操作。本教程将介绍如何使用汇编和DOS基本知识来创建一个简单的可执行文件。我们将使用MASM(Microsoft Macro Assembler)作
2023-04-27
dnf连发生成工具exe
DNF(Dungeon & Fighter,地下城与勇士)是一款横版格斗类网络游戏,其支持多人在线合作。连发生成工具是一个辅助程序,制作出连续按键输入功能的exe文件,让玩家在游戏中实现连击攻击。但使用第三方工具涉及作弊行为,可能导致封号。以下是一个基本的
2023-04-27
cpu如何打包exe
在计算机领域,EXE是Microsoft Windows.DOS系统下可执行文件的扩展名。它是由编译器编译出的机器码文件,可以直接在操作系统上运行。在本文中,我将详细介绍CPU如何通过编译器将源代码打包成EXE文件的过程。打包EXE文件的过程通常分为四个阶
2023-04-27
能集成网页的exe软件
集成网页的exe软件,也称为“打包网页”,是将网页文件(HTML、CSS、JavaScript等)打包成一个exe可执行文件,使用户可以在没有网络连接的情况下访问网页。这种软件通常被用于制作离线版网页、电子书、教育课件等。在这篇文章中,我将介绍集成网页的e
2023-04-14
一秒制作exe
制作exe文件是程序员经常需要做的事情之一,它可以将我们编写的代码打包成可执行文件,方便用户直接运行程序。在这里,我将介绍一种快速制作exe文件的方法——使用PyInstaller。PyInstaller是一个跨平台的Python应用程序打包器,它可以将P
2023-04-14
html如何打包为exe
HTML是一种标记语言,用于创建网站和Web应用程序。虽然HTML本身并不能被打包为可执行文件,但是我们可以使用一些工具来将HTML文件打包为可执行文件,从而实现离线运行。一种常用的工具是Electron,它是一个基于Node.js和Chromium的框架
2023-04-14
exe内嵌网页
EXE内嵌网页指的是将网页直接嵌入到Windows可执行文件(EXE文件)中,使得用户可以直接打开EXE文件,而无需打开一个独立的浏览器窗口来访问网页。这种技术的应用非常广泛,如电子书、软件帮助文档、演示文稿等等。实现EXE内嵌网页的方法有很多,以下是其中
2023-04-14
dw生成exe
DW(Dreamweaver)是一款常用的网页开发工具,它可以生成静态网页和动态网页。在DW中,生成exe文件主要是通过将网页文件打包成可执行文件的形式,使得用户可以直接双击运行,而不需要使用浏览器访问。生成exe文件的原理主要是将网页文件打包成一个可执行
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4