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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
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;
        }

        if (!LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&Luid))
        {
                return 1;
        }

        tp.PrivilegeCount = 1;
        tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
        tp.Privileges[0].Luid = Luid;

        if (!AdjustTokenPrivileges(hToken,0,&tp,sizeof(TOKEN_PRI
API Hook完全手册 注:本文是根据我两年前写的一个系统行为监测程序写成(参考了一些书籍文章)。最近在论坛上看到有不少人在问关于API Hook的问题,便写成此文,希望能对朋友们在写API Hook代码的时候能够有所帮助。1 基本原理API Hook是什么我就不多说了,直接进入正题。API Hook技术主要有下面的技术难点:1.     如何将自己的的代码Inject到其他进程2.     如何Hoo 阅读详情

相关推荐

HOOK分类

1、HOOK分类: 对于 Hook 技术,可以分为两块,第一块是在 Ring3 层的 Hook,俗称应用层 Hook 技术,另外一块自然是在 Ring0 层得 Hook,俗称为内核层 Hook 技术。 2、应用层 Hook 技术: Ring3 层的 Hook 基本上可以分为两种大的类型, 第一类即是 Windows 消息的 Hook,第二类则是 Window

心之所向,身之所往 5828

APIHOOK拦截指定进程创建新进程

APIHOOK拦截指定进程创建新进程。@按键精灵。

API HOOK 全局钩子, 防止进程被杀

API拦截 防止进程被控制台杀死. 用的是全局钩子 通过修改进程的导入表修改OpenProcess的地址指向我们自定义的函数

Ring3层hook

hook engine: nthookengine mhook Detour 方法: 本进程hook,直接调用hook函数(自己进程还要hook?),否则写一个dll,在dll里hook每一个函数,然后将该dll注入到目标进程,达到hook目标进程中的函数的目的。 MHOOK 要获取原始函数地址 #include mhook.h typedef ULONG (WINAPI* _N...

kernweak的博客 914

windows HOOK学习(一)

windows hook

prerfect_cat的博客 962

C/C++ HOOK 全局 API

全局 API Hook 用于在操作系统级别劫持修改全局API(Application Programming Interface,应用程序编程接口)的调用。通过全局API Hook,可以截获篡改应用程序对特定API调用,从而实现对应用程序行为的监控、修改或增强。

微软技术分享 9998

API拦截—实现Ring3全局HOOK

       魏滔序注:本转载内容仅用来技术研究,请勿于损人害己之用。       首先来解释一下这次的目标。由于windows的copy-on-write机制(Ring0下可以用CR0寄存器关掉它),Ring3下的HOOK只对当前进程有效,其他进程API还是正常的。这就是说我们必须枚举进程,然后对每个Ring3进程执行一遍HOOK操作。但是,系统中总有新进程产生,对于这些新进程我们怎么处理

迈克揉索芙特 4756

Windows HOOK

一、进程HOOK HHOOK g_hKeyboard=NULL; BOOL CInnerHookDlg::OnInitDialog() { ... // 安装HOOK g_hKeyboard=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,GetCurrentThreadId()); ... } void CInnerHookDlg::OnClose() { // 卸载HOOK UnhookWindowsHookEx(g_hKeyboard)

cfz751740465的博客 436

C++ HOOK 指定进程的指定 API(MessageBoxA 为例)(最简单)

这篇文章只是基于我之前的全局 HOOK 的修改,要看全局 HOOK点这里 虽然全局 HOOK 很给力,但是越到后来越发现这个东西除了可以 以外,实际上用途并没有想象中的广泛。相反,对于制定进程的指定 APIHOOK 却非常实用,所以就把以前的代码精简一下,去掉它浮夸的外衣,以最少的代码,实现最基本的 HOOK 功能 。 dll 代码: // dllmain.cpp : 定义 DLL 应用...

LYSM 3277

hook其他进程API

HOOK是一种WINDOWS下存在很久的技术了。 HOOK一般分两种1。HOOK MESSAGE 2。HOOK API 本问讨论的是HOOK API。(如果你是HOOK高手就不要看了) 在最初学HOOK-API的时候通常都是通过"覆盖地址""修改IAT"的方法。通过这两种技术,我们基本都可以实现对本进程API函数进行HOOK了。但是在高兴之余会有点遗憾,怎么才能HOOK其他进程API函数呢?

Johnny的专栏 1777

vb6无dll实现全局hook任意进程任意API

如题所言,在XPWin7均可以运行,非常稳定,可以拦截到指定API,但我看不懂代码,不知道如何获取拦截到的参数,有高人看到指点下。

hook其他进程API【转载】

hook其他进程API                                       今天终于有了一个小小的进步就算是自己的努力来完成的,没想到HOOK其他进程API原来这样的简单。其实就是两个关键的技术(HOOK-API远程线程注入)。HOOK是一种WINDOWS下存在很久的技术了。 HOOK一般分两种1。HOOK MESSAGE 2。HOOK API 本问讨论的是HOOK

梦的归宿 1万+

API Hook 原理

笔记(Hook API) 作者:佚名 文章来源:网络 点击数:312 更新时间:2006-7-11 23:26:03      家里不能上网,实在无聊,翻遍了机子里所有的东东。无意中找到一些以前没弄懂的、后来一直没有

冰峰 的专栏 3373
上一篇: 修改IAT,HOOK API
下一篇: 透还原卡和还原软件的代码
iiprogram
博客等级 码龄25年 1066粉丝 1515原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值