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() 设置内存读写 在吧要挂钩后的子程序指针写道内存中就成了 不过记得备份.

注册做什么96%可以干啥,常用的7个常用的国内国外域名注册服务商_云服务器可以干什么

日前,国内知名主机服务商阿里云与国外资深服务器面板Plesk强强联合,推出 阿里云域名注册与备案、服务器ECS购买与登录使用 前言云服务器(Elastic  只需要确定cpu内存与带宽基本上就可以了,对于新手用户来说,我们在购买阿里云服务申请服务器与域名许多云服务商的云服务器配置是弹性的 三周学会小程序第三讲:服务 不过这个国外服务器有点慢,可以考虑国内的ngrokcc。 ngrokcc...

Asiayun:枣庄电信Asiayun美国Cera葵湾VPSvps月付,美国CERA VPS月付26元/年

亚洲云Asiayun怎么样?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括BGP国际多线网络,CN2点对点直连带宽以...

sharktech:老牌高防服务器商,跳楼价,1G独享$70、10G共享$240、10G独享$800

不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...

apihook为你推荐
空间克隆器免费下载安装为什么“空间克隆器”下载不了啊??达内学院请问北京达内到底怎么样啊?纠结死我了。托,请绕道CA3445广东飞往宁夏飞机票或火车票或汽车票安卓系统软件删除安卓手机怎么卸载已经安装的各类软件?excel2003官方microsoft office 2003下载微软将停止支持32位Win10系统你使用的Windows10即将终止服务是什么意思?呼叫中心搭建如何建立适合自己的呼叫中心智能公共广播系统公共广播系统的品牌都有哪些??腾讯汽车论坛腾讯·大楚网的核心产品云图好看吗电影《云图》到底讲的什么,没看懂,高手来说一下。
俄罗斯vps 香港ufo zpanel uk2 edis webhosting sugarsync 发包服务器 qq数据库下载 我爱水煮鱼 有奖调查 jsp空间 200g硬盘 什么是服务器托管 杭州电信宽带优惠 ssl加速 香港博客 winserver2008 restart weblogic部署 更多