apihookVB中如何实现API HOOK

apihook  时间:2021-07-28  阅读:()

如何使用WINSOCK命令处理消息,Api hook拦截修改socket数据包

下面重点介绍创建挡截 WinSock 外挂程序的基本步骤:    (1) 创建 DLL 项目,选择 Win32 Dynamic-Link Library ,再选择 An empty DLL project 。

   (2) 新建文件 wsock32.h ,按如下步骤输入代码:    ① 加入相关变量声明:     HMODULE hModule=NULL; // 模块句柄     char buffer[1000]; // 缓冲区     FARPROC proc; // 函数入口指针    ② 定义指向原WinSock库中的所有函数地址的指针变量,因WinSock库共提供70多个函数,限于篇幅,在此就只选择几个常用的函数列出,有关这些库函数的说明可参考MSDN相关内容。

    // 定义指向原 WinSock 库函数地址的指针变量。

    SOCKET (__stdcall *socket1)(int ,int,int);// 创建 Sock 函数。

    int   (__stdcall *WSAStartup1)(WORD,LPWSADATA);// 初始化 WinSock 库函数。

    int   (__stdcall *WSACleanup1)();// 清除 WinSock 库函数。

    int (__stdcall *recv1)(SOCKET ,char FAR * ,int ,int );// 接收数据函数。

    int (__stdcall *send1)(SOCKET ,const char * ,int ,int);// 发送数据函数。

    int (__stdcall *connect1)(SOCKET,const struct sockaddr *,int);// 创建连接函数。

    int (__stdcall *bind1)(SOCKET ,const struct sockaddr *,int );// 绑定函数。

    ...... 其它函数地址指针的定义略。

   (3) 新建 wsock32.cpp 文件,按如下步骤输入代码:    ① 加入相关头文件声明:     #include     #include     #include "wsock32.h"    ② 添加DllMain函数,在此函数中首先需要加载原WinSock库,并获取此库中所有函数的地址。

代码如下:     BOOL WINAPI DllMain (HANDLE hInst,ULONG ul_reason_for_call,LPVOID lpReserved)     {      if(hModule==NULL){       // 加载原 WinSock 库,原 WinSock 库已复制为 wsock32.001 。

    hModule=LoadLibrary("wsock32.001");    }      else return 1; // 获取原 WinSock 库中的所有函数的地址并保存,下面仅列出部分代码。

if(hModule!=NULL){       // 获取原 WinSock 库初始化函数的地址,并保存到 WSAStartup1 中。

proc=GetProcAddress(hModule,"WSAStartup");     WSAStartup1=(int (_stdcall *)(WORD,LPWSADATA))proc;       // 获取原 WinSock 库消除函数的地址,并保存到 WSACleanup1 中。

     proc=GetProcAddress(hModule i,"WSACleanup");      WSACleanup1=(int (_stdcall *)())proc;       // 获取原创建 Sock 函数的地址,并保存到 socket1 中。

     proc=GetProcAddress(hModule,"socket");       socket1=(SOCKET (_stdcall *)(int ,int,int))proc;       // 获取原创建连接函数的地址,并保存到 connect1 中。

      proc=GetProcAddress(hModule,"connect");       connect1=(int (_stdcall *)(SOCKET ,const struct sockaddr *,int ))proc;       // 获取原发送函数的地址,并保存到 send1 中。

      proc=GetProcAddress(hModule,"send");       send1=(int (_stdcall *)(SOCKET ,const char * ,int ,int ))proc;       // 获取原接收函数的地址,并保存到 recv1 中。

      proc=GetProcAddress(hModule,"recv");       recv1=(int (_stdcall *)(SOCKET ,char FAR * ,int ,int ))proc;       ...... 其它获取函数地址代码略。

    }     else return 0;     return 1; }

VB中如何实现API HOOK

先使用 GetProcAddress() 函数取得进程地址 然后用GetModuleHandleA() 取得实例句柄 在用VirtualProtect() 设置内存读写 在吧要挂钩后的子程序指针写道内存中就成了 不过记得备份.

老用户专享福利 腾讯云 免费领取轻量云2核4G服务器一年

感恩一年有你!免费领取2核4G套餐!2核4G轻量应用服务器2核 CPU 4GB内存 60G SSD云硬盘 6Mbps带宽领取地址:https://cloud.tencent.com/act/pro/lighthousethankyou活动规则活动时间2021年9月23日 ~ 2021年10月23日活动对象腾讯云官网已注册且完成实名认证的国内站用户(协作者与子用户账号除外),且符合以下活动条件:账号...

CloudCone月付$48,MC机房可小时付费

CloudCone商家在前面的文章中也有多次介绍,他们家的VPS主机还是蛮有特点的,和我们熟悉的DO、Linode、VuLTR商家很相似可以采用小时时间计费,如果我们不满意且不需要可以删除机器,这样就不扣费,如果希望用的时候再开通。唯独比较吐槽的就是他们家的产品太过于单一,一来是只有云服务器,而且是机房就唯一的MC机房。CloudCone 这次四周年促销活动期间,商家有新增独立服务器业务。同样的C...

HostDare($33.79/年)CKVM和QKVM套餐 可选CN2 GIA线路

关于HostDare服务商在之前的文章中有介绍过几次,算是比较老牌的服务商,但是商家背景财力不是特别雄厚,算是比较小众的个人服务商。目前主流提供CKVM和QKVM套餐。前者是电信CN2 GIA,不过库存储备也不是很足,这不九月份发布新的补货库存活动,有提供九折优惠CN2 GIA,以及六五折优惠QKVM普通线路方案。这次活动截止到9月30日,不清楚商家这次库存补货多少。比如 QKVM基础的五个方案都...

apihook为你推荐
win7无线局域网windows7怎样设置无线局域网色中色luntanwww.fzluntan.tk是什么类型的网站啊?iphone12或支持北斗导航苹果12几个版本windows7系统要求win7系统要求电梯物联网平台控网有什么作用?如何应用在电梯的管理中?nero教程如何使用NERO刻碟魔兽世界密保卡WOW现在的密保卡怎么弄?qq空间克隆素材qq空间克隆联通玩电信游戏我朋友是联通的网,想玩电信的游戏但是发现都很卡微软永久关闭实体店怎么彻底关闭微软商店的自动更新
fc2新域名 手机域名注册 中文域名查询 网页空间租用 vps租用 怎么申请域名 漂亮qq空间 webhostingpad 59.99美元 紫田 gg广告 howfile 美国堪萨斯 国外免费asp空间 33456 vip域名 东莞服务器 流媒体加速 512mb 登陆空间 更多