gpt4 book ai didi

c - 制作一个独立的 exe 来提取文件和其他命令

转载 作者:行者123 更新时间:2023-11-30 14:28:48 26 4
gpt4 key购买 nike

我正在用 C 和 winPCAP 制作一个在每次启动时启动的过滤嗅探器。为此,我想制作一个自包含的exe文件,它将exe和DLL提取(不,不是压缩!)到一个新文件夹,并静默执行其他命令(例如修改启动设置),而不显示任何窗口/终端。

所以

  1. 单个文件包含一个 exe 和 DLL。

  2. 执行时,它将文件复制到文件夹并执行其他命令

  3. 它默默地执行,无需任何窗口或终端或用户干预

我强调静音部分,所以我不能选择一些简单的安装程序。您能推荐一些生成此可执行文件的东西吗?

出于好奇:它是我大学项目的隐形数据包记录程序。 “隐形”部分将仅在具有 IE6 的 xp2 虚拟机上进行尝试(是的,老东西)。

编辑:回答评论者:它具有恶意软件特征。所以我在 virtualbox 中运行它,绝不松散。我只能从旧的安装磁盘上破坏带有 IE6 且没有防病毒软件的未打补丁的 xp 系统。这就是 IE css use after free 漏洞的范围,据我所知从未在野外见过。因此不存在不道德行为。

最佳答案

您可以通过使用编译器链接资源或使用特殊程序并检测 Windows API 来轻松嵌入资源。

类似的东西:

char file_to_be_altered[] = "MyInstaller.exe"

HANDLE hUpdate = BeginUpdateResource( file_to_be_altered, FALSE );
UpdateResource( hUpdate, "MyResType", "MyResName1", 0, pData, data_len );
EndUpdateResource( hUpdate, FALSE );

然后,当可执行文件运行时,您将枚举资源并选择类型为“MyResType”的资源。

struct res_entry { BYTE* pData; unsigned int len; }

BOOL CALLBACK EnumNamesCB(
HMODULE hModule, // module handle
LPCTSTR lpType, // address of resource type
LPTSTR lpName, // address of resource name
LONG_PTR lParam) //
{
std::vector<res_entry>& lst = *(reinterpret_cast< std::vector<res_entry>* >( lParam ));
HRSRC hRes = FindResource( hModule, lpName, lpType );
if( hRes == 0 ) return TRUE;
unsigned int len = SizeofResource( hModule, hRes );

HGLOBAL hGlob = LoadResource( hModule, hRes );
if( hGlob == 0 ) return TRUE;

res_entry t;
t.pData = LockResource( hGlob );
t.len = len;


lst.push_back( t ); // this is safe, because the resources are never deallocated
return TRUE;
}

....

void enum_entries()
{
std::vector<res_entry> lst;
::EnumResourceNames( hFileToQuery, "MyResType", &EnumNamesCB, reinterpret_cast<LONG_PTR>(&lst) );
}

您可以使用这些数据做任何您想做的事情,例如CreateFile ...并将数据写入光盘。

注意:这是安装程序在 Windows 上执行此操作的方式,开发它是为了将文件提取到临时目录并从那里安装。

关于c - 制作一个独立的 exe 来提取文件和其他命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com