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() 设置内存读写 在吧要挂钩后的子程序指针写道内存中就成了 不过记得备份.
傲游主机怎么样?傲游主机是一家成立于2010年的老牌国外VPS服务商,在澳大利亚及美国均注册公司,是由在澳洲留学的害羞哥、主机论坛知名版主组长等大佬创建,拥有多家海外直连线路机房资源,提供基于VPS主机和独立服务器租用等,其中VPS基于KVM或者XEN架构,可选机房包括中国香港、美国洛杉矶、韩国、日本、德国、荷兰等,均为CN2或者国内直连优秀线路。傲游主机提供8折优惠码:haixiuge,适用于全...
傲游主机商我们可能很多人并不陌生,实际上这个商家早年也就是个人主机商,传说是有几个个人投资创办的,不过能坚持到现在也算不错,毕竟有早年的用户积累正常情况上还是能延续的。如果是新服务商这几年确实不是特别容易,问到几个老牌的个人服务商很多都是早年的用户积累客户群。傲游主机目前有提供XEN和KVM架构的云服务器,不少还是亚洲CN2优化节点,目前数据中心包括中国香港、韩国、德国、荷兰和美国等多个地区的CN...
A400互联怎么样?A400互联是一家成立于2020年的商家,A400互联是云服务器网(yuntue.com)首次发布的云主机商家。本次A400互联给大家带来的是,全新上线的香港节点,cmi+cn2线路,全场香港产品7折优惠,优惠码0711,A400互联,只为给你提供更快,更稳,更实惠的套餐,香港节点上线cn2+cmi线路云服务器,37.8元/季/1H/1G/10M/300G,云上日子,你我共享。...
apihook为你推荐
谷歌德语在线翻译德语翻译成中文,怎么取消焦点WOW焦点怎么解除!发博客怎么发博客?vs2005快捷键VS2005的快捷方式是哪个文件啊?催收软件哪个好问下催款人爆通讯录是电话通讯录还是微信上的通讯录或者其它软件的通讯录flv转换aviflv怎么转换成avi腾讯汽车论坛买车需要注意些神马?云图好看吗电影云图好看吗?慕课网址慕课网是什么?无法清除dns缓存Windows无法清除DNS缓存
郑州服务器租用 万网域名解析 服务器配置技术网 sharktech 重庆服务器托管 百度云100as 国外免费空间 免费ftp站点 ntfs格式分区 gtt ca187 域名dns 网购分享 服务器论坛 注册阿里云邮箱 域名转入 阿里dns 江苏双线 apnic 存储服务器 更多