This is the final beta version of the next milestone. I think all common methods shall work properly. If you encounter any bug, please report it using the "Issue Tracker", because that's the only way to get them fixed!
I tested most of the code on a clean Windows 2000 SP4 installation(only with NET 2.0 redist installed), on Windows XP SP3 with VS2005 and on Windows Vista x64 with VS2005 and VS2008 installed.
I recommend to download the binaries and only use the source code to view it. The problem is that you need to compile the 32-bit parts on Windows 2000 and the 64-Bit parts on windows Vista x64. Then you would need to copy them all together to get a new working deployment package. Compiling the 64-Bit files on windows 2000 or XP does NOT work, even if Visual Studio supports it!
Of course you can compile the source code on one platform, but then you will get issues when executing your application on others...Major changes since EasyHook 2.0:
WHAT ARE THE IMPACTS OF THE LICENSE CHANGE?Due to some requests, I want to add that everyone interested in other licensing models is able to purchase a custom license of EasyHook.
- A documented, pure unmanaged API
- Support for 32- and 64-bit kernel mode hooking (also check out my PatchGuard 3 bypass driver which can be found in the release list)
- Source code was rewritten entirely and this will greatly improve performance, stability and maintainability
- Experimental stealth injection mechanism that won't raise attention of any current AV Software
- EasyHook32.dll and EasyHook64.dll are now pure unmanaged modules and can be used without any NET framework installed!
- Managed/Unmanaged module stack trace added
- Get calling managed/unmanaged module inside a hook handler
- Create custom stack traces inside a hook handler
- License has changed to Lesser GPL (LGPL)
- No unpacking/installation necessary anymore.
- No CRT bindings for release configurations, reducing deployment size about some megabytes.
- The Visual Studio Redistributable is not required anymore.
- First feature complete release of EasyHook...
To wrap it up (without warranty):
1. You are granted to sell any software that uses EasyHook over DLL, NET bindings or EasyHookQueryInterface(). This is covered by the native API and the managed interface.
2. You are NOT granted to sell any software that includes parts of the EasyHook source code or any modification! If you want to modify EasyHook, you are forced to release your work under the LGPL or GPL... Of course this only applies to the library itself. For example you could release a modification of EasyHook under LGPL, while still being able to release software, which takes advantage of this modification over DLL or NET bindings, under a proprietary license!
3. You shall include a visible hint in your software that EasyHook is used as module and also point out, that this module in particular is released under the terms of the LGPL and NOT under the terms of your software (assuming that your software has another license than LGPL or GPL).
I decided to release EasyHook under LGPL to prevent commercial abuse of this free work. I didn't release it under GPL, because I also want to address commercial vendors which are more common under Windows.