PE File Embed DLL

Takes an EXE file and a DLL file as input and embeds the DLL into the EXE file, creating a new EXE file.

By merging an EXE and a DLL their two address spaces become one. As a result there is no more API distinction between them. The DLL code is initialized just before the EXE entry point is called. Imports of the DLL are embedded into the import descriptors of the original executable while exports are discarded. When the original executable is relocatable then the relocation information of the DLL is kept aswell.

This tool can be used to inject loader code into games which you do not have the source code for. Said minimal code would then proceed to load other dependency DLLs.

It is supported to compile using Code::Blocks aswell, for either Linux or Windows.


Merging has been tested with 32bit DLL and 32bit EXE. 64bit images do work aswell. What is not possible is merging a 64bit DLL with a 32bit EXE and vice versa.