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() 设置内存读写 在吧要挂钩后的子程序指针写道内存中就成了 不过记得备份.
tmhhost放出了2021年的端午佳节+618年中大促的优惠活动:日本软银、洛杉矶200G高防cn2 gia、洛杉矶三网cn2 gia、香港200M直连BGP、韩国cn2,全都是高端优化线路,所有这些VPS直接8折,部分已经做了季付8折然后再在此基础上继续8折(也就是6.4折)。 官方网站:https://www.tmhhost.com 香港BGP线路VPS ,200M带宽 200M带...
hostkvm在2021年3月新上线洛杉矶新VPS业务,强制三网接入中国联通优化线路,是当前中美之间性价比最高、最火热的线路之一,性价比高、速度非常好,接近联通AS9929和电信AS4809的效果,带宽充裕,晚高峰也不爆炸。 官方网站:https://hostkvm.com 全场优惠码:2021(全场通用八折,终身码,长期) 美国 US-Plan0【三网联通优化线路】 内存:1G CPU:...
a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...
apihook为你推荐
发博客怎么发博客?微软将停止支持32位Win10系统win10提示系统安装错误怎么解决淘气鸟淘气鸟论坛为什么打不开了呼叫中心搭建构建呼叫中心系统的具体步骤有哪些??百度创业史百度的创始人是谁智能公共广播系统有谁知道公共广播系统都包括那些设备魔兽世界密保卡魔兽世界密保卡绑定操控人心如何操控自己的人生盈科oa办公系统OA办公设备主要有哪些?该怎样安装和维护、。软件测试工程师待遇软件测试工程师待遇好不好
什么是虚拟主机 泛域名 本网站服务器在美国维护 fdcservers 韩国加速器 360抢票助手 圣诞节促销 本网站在美国维护 工作站服务器 linux服务器维护 hktv 上海电信测速 net空间 石家庄服务器托管 杭州电信 存储服务器 闪讯网 蓝队云 cx域名 pptpvpn 更多