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 商家是一家成立于2019年的国人主机品牌。目前主营的是美国VPS以及美国、香港、韩国、菲律宾的独立服务器等,其中VPS业务涵盖香港CN2、香港NTT、美国CN2回程高防、美国CN2 GIA、日本软银、韩国cn2等,均为亚太中国直连优质线路,TmhHost提供全中文界面,支持支付宝付款。 TmhHost黑五优惠活动发布了,全场云服务器、独立服务器提供8折,另有充值返现、特价服务器促销...
蓝竹云怎么样 蓝竹云好不好蓝竹云是新商家这次给我们带来的 挂机宝25元/年 美国西雅图云服务器 下面是套餐和评测,废话不说直接开干~~蓝竹云官网链接点击打开官网江西上饶挂机宝宿主机配置 2*E5 2696V2 384G 8*1500G SAS RAID10阵列支持Windows sever 2008,Windows sever 2012,Centos 7.6,Debian 10.3,Ubuntu1...
简介华圣云 HuaSaint是阿里云国际版一级分销商(诚招募二级代理),专业为全球企业客户与个人开发者提供阿里云国际版开户注册、认证、充值等服务,通过HuaSaint开通阿里云国际版只需要一个邮箱,不需要PayPal信用卡,不需要买海外电话卡,绝对的零门槛,零风险官方网站:www.huasaint.com企业名:huaSaint Tech Limited阿里云国际版都有什么优势?阿里云国际版的产品...
apihook为你推荐
怎么取消焦点WOW焦点怎么解除!windows7正版验证window7正版验证发博客如何用word发博客日志?windowsphone手机Windows phone手机的优点和缺点iphone12或支持北斗导航苹果12屏幕设置微信语音在哪个文件夹怎么把微信语音导出来 从哪个文件夹导出啊腾讯汽车论坛买车需要注意些神马?做视频的免费软件有没有免费做视频的软件 汉化的金山铁路最新时刻表金山北至上虞北高铁时间表魔兽世界密保卡魔兽世界的密保卡怎么申请
重庆虚拟空间 国外网站空间 安徽双线服务器租用 亚洲大于500m l5639 mediafire下载工具 一点优惠网 坐公交投2700元 双拼域名 hinet 免费全能主机 空间技术网 台湾谷歌 idc查询 新睿云 512mb 日本代理ip 服务器硬件配置 cdn服务 阿里云邮箱怎么注册 更多