DLL EXE Hybrid C ++ Windows

问题描述 投票:1回答:4

我目前正在使用DLL注入,并且需要一个可以充当可执行文件和DLL的混合二进制文件。我想过可能会编写一个DllMain和WinMain函数,然后将其编译为可执行文件,但我不知道如果我这样做会发生什么。我知道通过使用像thinstall这样的东西或者将dll提取到一个临时位置然后从那里开始来组合一个dll和exe是可行的,但我不想搞砸任何这些东西。所以基本上,是否可以定义一个WinMain和Dll Main然后使用生成的可执行文件作为两者,如果没有,这甚至可能吗?提前致谢!

c++ dll exe code-injection hybrid
4个回答
3
投票

没有。

DLL和EXE都有一个PE(可移植可执行文件)头。该标题有一个字段IMAGE_FILE_HEADER::Characteristics。该字段的第14位为0(对于EXE)或1(对于DLL)。


1
投票

为什么不将所有公共代码放入静态库(.lib)并将DLL项目和EXE项目作为静态库的一个非常薄的包装器?


1
投票

您可以创建可执行文件的临时副本,修补PE标头并注入此副本。另一种方法是将DLL作为二进制资源放入可执行文件。在运行时,您可以将此二进制资源写入临时文件并将其用于注入。


0
投票

也可以从exe导出函数。所以你应该能够LoadLibrary(“foo.exe”),然后是GetProcAddress(hFoo,“bar”)

© www.soinside.com 2019 - 2024. All rights reserved.