1.创建一个DLL文件 写下如下代码
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
#include "stdio.h"
PROC oldAddress = (PROC)TerminateProcess;
PROC NewAddress = NULL;
DWORD * dwAddress = NULL;
BOOL My_TerminateProcess(HANDLE hProcess,UINT uExitCode)
{
MessageBox(NULL,"have been hook !",NULL,MB_OK);
return TRUE;
}
BOOL apihook(char * dllName,PROC pOldAddress,PROC pNewAddress)
{
HMODULE hModule;
IMAGE_DOS_HEADER * pImageDosHeader;
IMAGE_NT_HEADERS * pNtHeader;
IMAGE_IMPORT_DESCRIPTOR * pImportDesc;
IMAGE_THUNK_DATA * pThunkData;
//
hModule=GetModuleHandle(NULL);
if (hModule == NULL)
{
printf("GetModuleHandle error !");
return FALSE;
}
pImageDosHeader=(IMAGE_DOS_HEADER*)hModule;
if (pImageDosHeader == NULL)
{
printf("IMAGE_DOS_HEADER error!");
return FALSE;
}
pNtHeader=(IMAGE_NT_HEADERS *)((BYTE*)hModule+pImageDosHeader->e_lfanew);
if(pNtHeader == NULL)
{
printf("IMAGE_NT_HEADERS error !");
return FALSE;
}
pImportDesc=(IMAGE_IMPORT_DESCRIPTOR *)((BYTE*)hModule+pNtHeader->OptionalHeader.DataDirectory[1].VirtualAddress);
if(pImportDesc == NULL)
{
printf("IMAGE_IMPO