Dbpro exes consist of a normal exe with data appended on the end. The exe part is very similar between all dbpro exes. The same exe handles the three different types of dbpro exes, normal, compressed and exe with .pck file.
With a compressed exe the exe sees that the first appended file is "compress.dll". It then extracts "compress.dll" and then calls the decompress_block function within the dll. To this function it passes a pointer to the rest of the appended data and its size. The "compress.dll" then decompresses the data and returns a pointer to the decompressed data back to the dbpro exe.
If we inject our own "compress.dll" as the first attached file then the dbpro exe will extract our dll and call the compress_block function it contains passing a pointer to the rest of the appended data and its size.
We can then just pass back the already decompressed appended data and the dbpro exe will start as normal. We can also return 0 which will tell the dbpro exe an error occurred and it will silently exit.
This is mainly useful if used to inject a user friendly directx version check but it could be used to do anything that you can be done in a dll and needs to be done as soon as possible after the exe starts.
This program provides a simple way to inject a dll as the first attached file and some dlls to inject.
Download, with source.
http://winch.pinkbile.com/dark_injector.php
By way of demonstration, he emitted a batlike squeak that was indeed bothersome.