介绍
这篇文章将为大家详细讲解有关钩全版本IE并修改网址的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
正文
先导入一波引用
# include & lt; windows.h>
引用>
# include & lt; WinInet.h>
# include & lt; string>
# include & lt; iostream>
使用std:: string;
使用名称空间性病;
# pragma评论(自由,“wininet.lib")首先我们知道http应用层的函数基本都在wininet.dll中故我们导出wininet.dll的函数列表(这里我使用的是ProcessHacker)
我们要对Url进行拦截修改所以先要查找和Url有关的函数,这边的推迟验证了我之前说的经由wininet。dll是延迟导入IAT钩是无效的。
这里我们找到了InternetCrackUrl这个函数同时上面一个InternetConnect看上去非常有用,调试即在该函数加断点这里我使用的是开源的x64_dbg输入指令bp InternetConnectW
接下来是InLineHook非常简单
BYTE oldAddress [5]; BYTE newAddress [5],=, {, 0 xe9 }; void InHook () { ,memcpy (oldAddress, InternetConnectW,, 2),,//保存原字节 ,BYTE pByte [2],=, {xeb, 0, 0 xf9 },,//优化以防重复钩 ,if (* *)(字节InternetConnectW ==, 0 xeb) 返回才能; ,//计算偏移 ,DWORD Offset =,(字)hkInternetConnectW 作用;(字)InternetConnectW; 字,*(*)(时间+ newAddress 1),=,抵消; , ,DWORD 保护; ,VirtualProtect((值)((字)InternetConnectW 安康;5),,7日,PAGE_EXECUTE_READWRITE,,,保护);//修改内存属性 ,//修改函数地址数据 ,memcpy()的值((字)InternetConnectW 安康;5),,newAddress,, 5); ,memcpy (InternetConnectW, pByte,, 2); , ,VirtualProtect((值)((字)InternetConnectW 安康;5),,7日,保护,和保护);//,还原内存属性 }钩全版本IE并修改网址的示例分析