该程序相当简洁,只有三个文件,好奇之下就跟了一下看看。。。。
有一个dll,全局hook.
1.进程启动,判断是不是各大浏览器(360chrome.exe,iexplore.exe,sogouexplorer.exe,2345explorer.exe,qqbrowser.exe,qqbrowser.exe,baidubrowser.exe,360se.exe),如果不是这些浏览器,说明不是目标进程,dll退出。。。
2.如果是浏览器进程,则获取ws2_32.dll 函数的导出函数connect 的函数地址然后hook该函数。
connect函数原型如下:
int connect( SOCKET s, const struct sockaddr FAR *name, int namelen );
替换后函数如下
int __stdcall hook_connect(int a1, sockaddr_in *a2, int a3)
{
int result;
int v4;
unsigned __int32 v5;
if ( ntohs(a2->sin_port) == 443 )
{
result = pfn_connect(a1, a2, a3);
}
else
{
// 构造sockaddr_in结构
v5 = inet_addr("127.0.0.1");
HIWORD(v4) = htons(8099u);
LOWORD(v4) = 2;
result = pfn_connect(a1, &v4, 16);
}
return result;
}
这么简单的方法,竟然干掉了优酷,腾讯广告变黑,爱奇艺完全无效。。。。。。。。。。