75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*
 | |
|   PROCHOOK.H - Copyright (c) 1993 James M. Finnegan, All Rights Reserved
 | |
| */
 | |
| 
 | |
| // ProcHook Header.  Used by the ProcHook DLL source files, as well
 | |
| // as any app using the DLL.
 | |
| 
 | |
| #ifndef _INC_PROCHOOK
 | |
| #define _INC_PROCHOOK
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {            // No mangling!
 | |
| #endif
 | |
| 
 | |
| #include <windows.h>
 | |
| 
 | |
| // Byte pack structures
 | |
| #pragma pack(1)
 | |
| 
 | |
| typedef struct tagHOOKCHILD
 | |
| {
 | |
|     WORD                 wSig;         // Signature
 | |
|     struct  tagHOOKCHILD near *prev;   // Ptr to previous hook
 | |
|     struct  tagHOOKCHILD near *next;   // Ptr to next hook
 | |
|     VOID            near *npHookMaster;// Ptr to master structure
 | |
|     BYTE                 cBytes[5];    // Bytes of hooked function
 | |
|     FARPROC              lpfnNewFunc;  // Ptr to New function
 | |
| }HOOKCHILD;                
 | |
| 
 | |
| typedef HOOKCHILD            *PHOOKCHILD;
 | |
| typedef HOOKCHILD NEAR       *NPHOOKCHILD;
 | |
| typedef HOOKCHILD FAR        *LPHOOKCHILD;
 | |
| 
 | |
| typedef struct tagHOOKMASTER
 | |
| {
 | |
|     WORD                 wSig;         // Signature
 | |
|     struct tagHOOKMASTER near *prev;   // Ptr to previous master
 | |
|     struct tagHOOKMASTER near *next;   // Ptr to next master
 | |
|     NPHOOKCHILD          head;         // Ptr to head of child struct 
 | |
|     NPHOOKCHILD          tail;         // Ptr to tail of child struct
 | |
|     BOOL                 bExclusive;   // Exclusive Hook field
 | |
|     WORD                 wCount;       // Count of # of hooks to this function
 | |
|     WORD                 wUnhookCount; // Count of # of unhooks to this function
 | |
|     WORD                 wDataSel;     // Selector to aliased code selector
 | |
|     FARPROC              lpfnHookedFunction;// Ptr to original function
 | |
| }HOOKMASTER;
 | |
| 
 | |
| typedef HOOKMASTER            *PHOOKMASTER;
 | |
| typedef HOOKMASTER NEAR       *NPHOOKMASTER;
 | |
| typedef HOOKMASTER FAR        *LPHOOKMASTER;
 | |
| 
 | |
| 
 | |
| NPHOOKCHILD  WINAPI SetProcAddress (FARPROC, FARPROC, BOOL);
 | |
| BOOL         WINAPI SetProcRelease (NPHOOKCHILD);
 | |
| BOOL         WINAPI ProcHook       (NPHOOKCHILD);
 | |
| BOOL         WINAPI ProcUnhook     (NPHOOKCHILD);
 | |
| 
 | |
| NPHOOKMASTER WINAPI GetFirstHMaster(LPHOOKMASTER);
 | |
| NPHOOKMASTER WINAPI GetNextHMaster (LPHOOKMASTER);
 | |
| NPHOOKCHILD  WINAPI GetFirstHChild (LPHOOKMASTER, LPHOOKCHILD);
 | |
| NPHOOKCHILD  WINAPI GetNextHChild  (LPHOOKCHILD);
 | |
| 
 | |
| WORD         WINAPI GetOrdFromAddr (HMODULE, FARPROC);
 | |
| LPSTR        WINAPI GetNameFromOrd (HMODULE, WORD);
 | |
| 
 | |
| 
 | |
| // Set packing back to its default
 | |
| #pragma pack()
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }                       // End of extern "C" {
 | |
| #endif 
 | |
| 
 | |
| #endif  // _INC_PROCHOOK
 |