HOOK其他进程API和全局HOOK-API

本文介绍了如何在 Windows 下实现对其他进程 API 函数的 HOOK,通过远程线程注入和修改 IAT 技术,以 MessageBoxA 函数为例详细阐述了整个过程。代码包括注入程序、DLL 程序和测试程序,实现了对目标进程的 API 钩取。进一步讨论了如何实现全局 HOOK,即注入所有进程。
摘要由CSDN通过智能技术生成
HOOK是一种WINDOWS下存在很久的技术了。 
HOOK一般分两种1。HOOK MESSAGE  2。HOOK API 本问讨论的是HOOK API。(如果你是HOOK高手就不要看了) 
在最初学HOOK-API的时候通常都是通过覆盖地址和修改IAT的方法。
通过这两种技术,我们基本都可以实现对本进程的API函数进行HOOK了。但是在高兴之余会有点遗憾,
怎么才能HOOK其他进程的API函数呢?怎么才能对一个API函数进行全局的HOOK呢?
下面是我的一个简单的“HOOK其他进程API函数”的实现。(对另一进程的MessageBoxA这个函数进行HOOK) 

其实里面的应用了两个技术
1。远程线程注入 
2。修改IAT,HOOK-API

好了贴出代码如下:
一共是3个文件
install.c  注入程序 
fundll.cpp  DLL程序 
test.cpp  测试程序  

CODE:

//-------------------------install.c--------------------------
//
//write by Gxter
//install.c

#include "windows.h"
#include "tlhelp32.h"

#pragma comment(lib,"th32.lib")

const char *pkill="fundll.dll";                //DLL文件的路径

//这个路径很有意思,这个路径是相对于目标进程的,而不是自身进程。
//所以要嘛写成绝对路径,要嘛写成相对于目标进程的相对路径。
//如果写成相对于自身的路径就要麻烦了,本程序就找不到DLL文件了。 

char *prosess="test.exe";   //要注入的进程名(目标进程名)

int main()
{
        HANDLE hSnap;
        HANDLE hkernel32;        //被注入进程的句柄
        PROCESSENTRY32 pe; 
        BOOL bNext;
        HANDLE hToken;
        TOKEN_PRIVILEGES tp;
        LUID Luid;
        LPVOID p;
        FARPROC pfn;

        if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
        {
                return 1;
        }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值