www.pudn.com > HookAPI > HookAPI.h


// ------------------------------------- // 
// 您如果要使用本文件,请不要删除本说明  // 
// ------------------------------------- // 
//             HOOKAPI v1.0              // 
//   Copyright 2002 编程沙龙 Paladin     // 
//       www.ProgramSalon.com            // 
// ------------------------------------- // 
 
#ifndef __HookAPI_H__ 
#define __HookAPI_H__ 
 
#include  
#include "mydll.h" 
#include "apiinfo.h" 
 
#define MsgBox(msg) MessageBox(NULL, msg, "http://www.programsalon.com - HookAPI", MB_OK) 
 
typedef MYAPIINFO *(*tagGetMyAPIInfo)(); 
 
#ifdef WIN95 
#define HOOKAPI_DLL_NAME	"HookAPI9x.dll" 
#define MY_DLL_NAME			"mydll_9x.dll" 
#else 
#define HOOKAPI_DLL_NAME	"HookAPINT.dll" 
#define MY_DLL_NAME			"mydll.dll" 
#endif 
 
class CHookAPI   
{ 
public: 
	CHookAPI(); 
	virtual ~CHookAPI(); 
 
	int m_hook_type;			// 0 - hook all, 1 - hook one process 
	 
	HINSTANCE m_hMyDll; 
 
	int Init(); 
	int InitPSAPI(); 
	int FreePSAPI(); 
 
	int LoadMyDll(); 
	void FreeMyDll(); 
	 
	int HookOneAPI(APIINFO *api_info); 
	int UnhookOneAPI(APIINFO *api_info); 
	 
	int UnhookOneProcess(DWORD process_id); 
	 
	int HookAllAPI(); 
	void UnhookAllAPI(); 
 
	static void ProcessCall(); 
	 
	static int RestoreAPICodes(char *my_api_name); 
	static int ChangeAPICodes(char *my_api_name); 
 
	static int RemoveProtection(APIINFO *); 
 
#ifdef WINNT 
	int InjectDll(char *dll_name); 
	int UninjectDll(char *dll_name); 
	 
	static DWORD WINAPI myCreateProcessW2003( 
		LPCWSTR lpApplicationName, 
		LPWSTR lpCommandLine,  
		LPSECURITY_ATTRIBUTES lpProcessAttributes, 
		LPSECURITY_ATTRIBUTES lpThreadAttributes, 
		BOOL bInheritHandles, 
		DWORD dwCreationFlags, 
		LPVOID lpEnvironment, 
		LPCWSTR lpCurrentDirectory, 
		LPSTARTUPINFOW lpStartupInfo, 
		LPPROCESS_INFORMATION lpProcessInformation); 
	static DWORD WINAPI myCreateProcessA2003( 
		LPCSTR lpApplicationName, 
		LPSTR lpCommandLine,  
		LPSECURITY_ATTRIBUTES lpProcessAttributes, 
		LPSECURITY_ATTRIBUTES lpThreadAttributes, 
		BOOL bInheritHandles, 
		DWORD dwCreationFlags, 
		LPVOID lpEnvironment, 
		LPCSTR lpCurrentDirectory, 
		LPSTARTUPINFO lpStartupInfo, 
		LPPROCESS_INFORMATION lpProcessInformation); 
 
#endif 
}; 
 
#endif