Linkers and Loaders
- Beginner's Guide to Linkers by David Drysdale, 2004-2005,2009-2010
- Win32 LD_PRELOAD by Steven Engelhardt: CreateProcess(), change the machine code to load a DLL then execute the original.
- DLL_PRELOAD: Solarish LD_PRELOAD for Windows NT by Andy Polyakov: load a "DLL loader DLL" in every process through the "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs" registry key. Programs must be linked with user32.dll
- Detours from Microsoft Research: only free for non commercial use.
- See also: Wikipedia:DLL Injection
Portable Executable Format
- Wikipedia:Portable Executable
- An In-Depth Look into the Win32 Portable Executable File Format by Matt Pietrek, Feb 2002
- Mozilla: Faulty.lib static and dynamic linker supporting on demand zip decompression.
- Solaris Linker and Libraries Guide -- Perhaps the most well written and maintained resource on this subject. The GNU linker and the Linux dynamic loaders do some things differently though. (e.g. GNU_HASH, STT_IFUNC, note.GNU-stack sections)
- Symbol Versioning
- System Programming