A simple and multi-purpose process injector.
Currently it supports injecting a DLL in two ways:
Before the process starts - This method creates the process in a suspended state and injects your DLL. This is helpful if you need to hook code early, for example if you need to capture/modify network packets.
After the process starts - This is the traditional way of doing injection. It does not suspend the remote process. It just creates a new thread in that process to load your DLL. Use this when timing doesn't matter.
Examples
Here's an example where I injected a DLL called bad.dll into Notepad running at PID 13884. The DLL injection generates a messagebox. The DLL is injected after the process has started.
Here is Process Explorer showing the DLL loaded by Notepad.
Here's the code for the DLL injected: