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

pacificrack:超级秒杀,VPS低至$7.2/年,美国洛杉矶VPS,1Gbps带宽

pacificrack又追加了3款特价便宜vps搞促销,而且是直接7折优惠(一次性),低至年付7.2美元。这是本月第3波便宜vps了。熟悉pacificrack的知道机房是QN的洛杉矶,接入1Gbps带宽,KVM虚拟,纯SSD RAID10,自带一个IPv4。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7折秒杀优惠码:R3UWUYF01T内存CPUSS...

RAKsmart 黑色星期五云服务器七折优惠 站群服务器首月半价

一年一度的黑色星期五和网络星期一活动陆续到来,看到各大服务商都有发布促销活动。同时RAKsmart商家我们也是比较熟悉的,这次是继双十一活动之后的促销活动。在活动产品中基本上沿袭双11的活动策略,比如有提供云服务器七折优惠,站群服务器首月半价、还有新人赠送红包等活动。如果我们有需要RAKsmart商家VPS、云服务器、独立服务器等产品的可以看看他们家的活动。这次活动截止到11月30日。第一、限时限...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

apihook为你推荐
贺卡网站谁能提供一些手工制作贺卡的网站qq空间维护QQ空间正在维护中,暂不支持访问,这是什么意思,什么时候才能好?智能机刷机软件安卓手机刷机,用什么软件最简单?magento模板网站建好了,但是对模板不满意,有哪位亲知道怎么换模板吗?物联卡官网物联卡是正规流量卡吗?创业好项目论坛大学生创业有什么好的项目啊?linux操作系统好吗linux系统好不好学??做视频的免费软件有没有免费做视频的软件 汉化的qq空间克隆素材qq空间克隆发送验证码手机发送图文验证码怎么发,图文是一个长方型里面有四个数字,望知道者告知,
美国虚拟主机推荐 备案域名 武汉域名注册 重庆vps租用 hostmaster bbr 腾讯云数据库 tightvnc 国外网站代理服务器 howfile 免费个人空间 怎样建立邮箱 傲盾官网 常州联通宽带 空间首页登陆 免费的域名 秒杀品 免费php空间 杭州电信宽带 双十二促销 更多