利用hook截获进程的API调用

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

截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。
首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下:
HHOOK SetWindowsHookEx(
  int idHook,        // hook type
  HOOKPROC lpfn,     // hook procedure
  HINSTANCE hMod,    // handle to application instance
  DWORD dwThreadId   // thread identifier
);
具体的参数含义可以翻阅msdn,没有msdn可谓寸步难行。
这里Hook本身的功能并不重要,我们使用它的目的仅仅只是为了能够让Windows把我们的代码植入别的进程里去。hook Type我们任选一种即可,只要保证是目标程序肯定会调用到就行,这里我用的是WH_CALLWNDPROC。lpfn和hMod分别指向我们的钩子代码及其所在的dll,dwThreadId设为0,表示对所有系统内的线程都挂上这样一个hook,这样我们才能把代码放到别的进程里去。

之后,我们的代码就已经进入了系统内的所有进程空间了。必须注意的是,我们只需要截获我们所关心的目标程序的调用,因此还必须区分一下进程号。我们自己的钩子函数中,第一次运行将进行最重要的API重定向的工作。也就是通过将所需要截获的API的开头几个字节改为一个跳转指令,使其跳转到我们的API中来。这是最关键的部分。这里我想截三个调用,ws2_32.dll中的send和recv、user32.dll中的GetMessageA。

DWORD dwCurrentPID = 0;
HHOOK hOldHook = NULL;
DWORD pSend = 0;
DWORD pRecv = 0;
GETMESSAGE pGetMessage = NULL;

BYTE btNewBytes[8] = { 0x0B8, 0x0, 0x0, 0x40, 0x0, 0x0FF, 0x0E0, 0 };
DWORD dwOldBytes[3][2];

HANDLE hDebug = INVALID_HANDLE_VALUE;

LRESULT CALLBACK CallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
{
 DWORD dwSize;
 DWORD dwPIDWatched;
 HMODULE 

截获 Windows socket API  1前言本文主要介绍了如何实现替换Windows上的API函数,实现Windows API Hook(当然,对于socket的Hook只是其中的一种特例)。这种Hook API技术被广泛的采用在一些领域中,如屏幕取词,个人防火墙等。这种API Hook技术并不是很新,但是涉及的领域比较宽广,要想做好有一定的技术难度。本文是采集了不少达人的以前资料并结合自己的实验得出的心得体会,在这里进行总 阅读详情

相关推荐

Android利用ptrace实现Hook API

Hook API的技术由来已久,在操作系统未能提供所需功能的情况下,利用Hook API的手段来实现某种必需的功能也算是一种不得已的办法。 笔者了解Hook API技术最早是在十几年前,当时是在Windows平台下开发电子词典的光标取词功能。这项功能就是利用Hook API的技术把系统的字符串输出函数替换成了电子词典中的函数,从而能得到屏幕上任何位置的字符串。无论是16位的Windows9

u013234805的专栏 9932

易语言网络封包拦截修改源码.rar

易语言网络封包拦截修改源码.rar

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

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

4283

易语言封包截取源码,易语言HOOKapi实现封包截取

HOOKapi实现封包截取系统结构:dll,myrecv,mysend,HOOKON,HOOKOFF,发送文本,CallWindowProc_,SetWindowLong_,寻找顶级窗口_,MessageBox_,关闭内核对象_,创建文件映射对象_,MapViewOfFile_,UnmapViewOfFile_,打开文件映射

易语言-hook 拦截操作源码 纯源 APIHOOK

易语言杀软监控源码例程程序结合易语言通用对象支持库,调用API函数监控杀软。易语言杀软监控源码对学习HOOK有所帮助。 易学编程网

易语言编程-远程封包拦截与发送技术

我们前面学习了封包拦截的技术和发送技术,但都是用DLL的注入方式来进行拦截封包的 那么有没有一种可以不需要注入,就可以拦截到指定进程里的封包数据呢? 答案是肯定的:有的 独立团论坛的Game-EC模块的最新版本就加入了远程封包功能,但是要正确使用模块里的命令稳定运行,需模块授权使用 这个功能可以实现不需要写DLL注入到进程, 就可以进行拦截和获取指定进程的封包数据和套接字信息 非常方便便捷,远程封...

hzw320的博客 1万+

Windows Hook 易核心编程(4) API Hook 续 拦截API

在开始之前,让我们先来回顾一下: 什么叫Hook API?       所谓Hook就是钩子的意思,而API是指Windows开放给程序员的编程接口,使得在用户级别下可以对操作系统进行控 制,也就是一般的应用程序都需要调用API来完成某些功能,Hook API的意思就是在这些应用程序调用真正的系统API前可 以先被截获,从而进行一些处理再调用真正的API来完成功能。在讲H

ywbhnay的专栏 2322

关于API HOOK拦截封包原理

作者:不详  来源于:TTee.com 外挂网http://soft.ttee.com/Article/Catalog32/95.html我自己做的apihook,是用了陷阱式和导入表式封装在同一个类里的。源代码还没整理,而且是用delphi编写的。本人最近忙其他一个程序,加上工作忙,所以现找来网上的一篇关于apihook的文章。 本论坛很多朋友是用C++的,所以转贴了一篇C++的,原理写的蛮清楚

Purpleendurer@CSDN 3537

利用HOOK拦截封包原理

 截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。 首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKPROC lpfn, // ho

dream199029的专栏 569

利用HOOK拦截封包原理(转载)

利用HOOK拦截封包原理  截获API是个很有用的东西,比如你想分析一下别人的程序是怎样工作的。这里我介绍一下一种我自己试验通过的方法。   首先,我们必须设法把自己的代码放到目标程序的进程空间里去。Windows Hook可以帮我们实现这一点。SetWindowsHookEx的声明如下: HHOOK SetWindowsHookEx( int idHook, // hook type HOOKP

漠漠星的专栏 3080

易语言web封包拦截

易语言web封包拦截源码,web封包拦截,排查无用封包,封包分析,拦截连接,拦截接收,拦截发送,加入列表,取指定内容,取当前时间,安装拦截,安装send,卸载send,安装recv,卸载recv,安装WSASend,卸载WSASend,安装WSARecv,卸载WSARecv,安装sendto,卸载sendto,安装recvfro

HookRecv 拦截输出

hookrecv拦截输出封包信息 不错的东西

易语言网络封包拦截修改源码-易语言

易语言网络封包拦截修改源码

易语言-易语言通过HOOK进行IP转发/拦截

通过HOOK进行IP转发/拦截源码,源码调用了超级模块。

Redspider
博客等级 码龄27年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值