前言:
一直以来,对Hook Api 比较好奇,之前公司的内网安全项目,需要对个人计算机的文件进出及文件内容进行监控,用到了Hook Api 相关的技术。下面我们简单介绍下如何Hook Api :
1. 远程注入Dll
Windows 核心编程第五版 22 章讲述了远程注入Dll相关内容。具体注入代码如下:
// Injectexe.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <Tlhelp32.h>
BOOL InjectDll(const char *szDllPath, int iProcessID)
{
//打开远程线程
HANDLE hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, iProcessID);
if (hRemoteProcess == INVALID_HANDLE_VALUE)
{
return FALSE;
}
//使用VirtualAllocEx函数在远程进程的内存地址空间分配DLL文件名空间
char *pszLibFileRemote = (char *)VirtualAllocEx(hRemoteProcess, NULL, strlen(szDllPath) + 1, MEM_COMMIT, PAGE_READWRITE);
if (!pszLibFileRemote)
{
return FALSE;
}
//使用WriteProcessMemory函数将DLL的路径名写入到远程进程的内存空间
WriteProcessMemory(hRemoteProcess, pszLibFileRemote, (void *)szDllPath, strlen(szDllPath) + 1