免费试用

中文化、本土化、云端化的在线跨平台软件开发工具,支持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封装mis
在这篇文章中,我们将探讨一个有趣的话题——如何将一个 `MSI` 文件(微软安装程序文件)封装成 `EXE` 文件。这样的封装功能对于软件开发者来说十分有用,因为它使得应用程序的分发和安装更加简单。在阅读这篇文章后,您将了解两者之间的区别以及如何将一个 `
2023-04-27
exe修改重新打包
在本文章中,我们将深入探讨如何修改一个可执行文件(.exe)并重新打包的原理和详细介绍。在许多场景中,修改和重新打包.exe文件可能是有用的,可能是出于软件破解、病毒分析、汉化修改等目的。但请注意,在进行此类操作时一定要遵守法律法规和软件许可协议。一、原理
2023-04-27
dll 打包到exe
在本教程中,我们将讨论如何将动态链接库(.dll)文件打包到可执行文件(.exe)中。这样做的目的通常是将程序需要的所有资源都包含在单个可执行文件中,方便发布和执行。我们将简要介绍动态链接库和可执行文件的概念,然后展示如何使用一些实用工具实现将 DLL 打
2023-04-27
c语言做成exe
在这篇文章中,我们将介绍如何将C语言源代码编译为可执行的exe文件,以及相关的原理和详细步骤。C语言是一种广泛使用的编程语言,有着强大的功能和广泛的应用领域。编译过程包括预处理、编译、汇编和链接等多个阶段。一、原理1. 预处理:预处理器读取源代码文件,处理
2023-04-27
群晖网页转exe
群晖网页转exe是指将群晖NAS上的网页应用转换为可执行文件(exe),以便在Windows操作系统上运行。这种转换可以方便用户在不使用群晖NAS的情况下,仍然能够使用NAS上的网页应用程序。下面是详细介绍。一、原理群晖NAS使用的是Linux操作系统,而
2023-04-14
文件打包成dmg
DMG(Disk Image)是Mac OS X系统中常见的一种磁盘映像文件格式。它可以将多个文件打包成一个文件,并且可以在Mac OS X中进行挂载和使用。在Mac OS X系统中,DMG文件通常用于软件安装包、光盘镜像等。下面将介绍如何将多个文件打包成
2023-04-14
把网页变成exe
将网页转换为可执行文件(exe)可以使得网页在没有网络连接的情况下运行,并且能够保护网页的内容不被修改或盗用。本文将介绍如何将网页转换为exe文件的原理和详细步骤。一、原理将网页转换为exe文件的原理是将网页的所有文件(包括HTML、CSS、JavaScr
2023-04-14
开发自建应用
开发自建应用是指开发者利用各种技术和工具,自己搭建一个应用程序,可以运行在不同的设备和平台上,比如手机、电脑、平板等。自建应用可以是一个网站、一个桌面应用、一个移动应用等等,不同类型的应用需要使用不同的开发工具和技术。自建应用的开发原理主要包括以下几个方面
2023-04-14
封装应用
封装应用是一种软件开发中的重要思想,它可以将复杂的代码逻辑和功能封装成一个简单易用的模块,提高代码的复用性和可维护性,同时也可以避免代码重复和错误。本文将详细介绍封装应用的原理和应用。一、封装的原理封装是面向对象编程中的一个重要概念,它将数据和行为封装在一
2023-04-14
创造软件
创造软件是一个复杂而又有趣的过程。在开始创造软件之前,需要对软件的开发流程有一定的了解。软件开发的流程通常包括需求分析、设计、编码、测试、部署和维护等环节。需求分析是软件开发的第一步,它的目的是确定软件的功能和性能要求。在这个阶段中,需要和客户进行沟通,了
2023-04-14
php如何打包成exe
在开发PHP应用程序时,我们通常会将PHP代码打包成可执行的EXE文件,以方便用户在没有安装PHP环境的情况下运行程序。本文将介绍如何将PHP代码打包成EXE文件,包括原理和详细步骤。一、原理将PHP打包成EXE文件的原理是将PHP解释器和PHP代码打包成
2023-04-14
exe前端
EXE前端是指一种基于Web技术的前端开发框架,其主要特点是使用JavaScript语言进行开发,可以实现高效、快速的Web应用程序开发。EXE前端框架的开发者为阿里巴巴前端团队,该框架在阿里巴巴内部已经得到了广泛应用,并且在国内外的前端开发领域也有着很高
2023-04-14
©2015-2021 成都七扇门科技有限公司 yimenapp.com  川公网安备 51019002001185号 蜀ICP备17005078号-4