91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 25KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-16
  • 語言: C/C++
  • 標簽: socket??proxy??

資源簡介

win sockket全局代理驅動(c++ spi) 通過spi驅動實現在的全局代理模塊,支持socks4,5,http代理協議。 同時支持ip filter功能, 可用于IE等瀏覽器。

資源截圖

代碼片段和文件信息

#include?“StdAfx.h“

//
//?進程間全局變量
//
#pragma?data_seg(“.inidata“)
int m_iDllCount =?0;
#pragma?data_seg()

//
//?進程內全局變量
//
CRITICAL_SECTION gCriticalSection?gOutput; //?代碼段保護變量
WSPPROC_TABLE NextProcTable???; //?保存30個服務提供者指針
TCHAR m_sProcessName[MAX_PATH]; //?保存當前進程名稱
CLog?g_log;

//
//?自定義注冊表分支用來保存系統基礎服務提供者的路徑
//
#define?REG_INSTALL_KEY _T(“SYSTEM\\CurrentControlSet\\Services\\WinSock2\\anyx_socks_proxy“)
//#define?CONFIG_FILE?_T(“C:\\SocksProxy.ini“)
//——————————————————————————————————————
//?私有函數

void?GetRightEntryIdItem(
IN WSAPROTOCOL_INFOW *pProtocolInfo?
OUT TCHAR *sItem

{
if(pProtocolInfo->ProtocolChain.ChainLen?<=?1)
_stprintf(sItem?_T(“%u“)?pProtocolInfo->dwCatalogEntryId);
else
_stprintf(sItem?_T(“%u“)?pProtocolInfo->ProtocolChain
.ChainEntries[pProtocolInfo->ProtocolChain.ChainLen?-?1]);
}

BOOL?GetHookProvider(
IN WSAPROTOCOL_INFOW *pProtocolInfo?
OUT TCHAR *sPathName

{
TCHAR?sItem[21];
GetRightEntryIdItem(pProtocolInfo?sItem);

HKEY hSubkey;
DWORD ulDateLenth =?MAX_PATH;
TCHAR sTemp[MAX_PATH];

if?(RegOpenKeyEx(HKEY_LOCAL_MACHINE
?REG_INSTALL_KEY?0?KEY_ALL_ACCESS?&hSubkey)?!=?ERROR_SUCCESS)
return?FALSE;
if?(RegQueryValueEx(hSubkey?sItem?0?NULL?(BYTE*)sTemp?&ulDateLenth)
||?ExpandEnvironmentStrings(sTemp?sPathName?ulDateLenth)?==?0)
return?FALSE;
if(sPathName[0]?==?‘\0‘?&&?sTemp[0]?!=?‘\0‘)
_tcscpy(sPathName?sTemp);
RegCloseKey(hSubkey);

return?TRUE;
}

//代理類型常量
#define?VER_SOCKS5?5
#define?VER_SOCKS4?4


//socks?proxy?info;
bool?b_direct?=?true;
char?szSocksHost[MAX_PATH]?=?{0};
int?szSocksPort?=?1080;
char?szUser[MAX_PATH]?=?{0};
char?szPass[MAX_PATH]?=?{0};
int?szVer=VER_SOCKS5;
//igrone?ip;
char?szIgnore[1024]={0};

HANDLE?hLogFile;?//?日志文件句柄


//SOCKET信息結構
typedef?struct?_SOCKET_INFO?{
????int?nProxySocket;???//代理SOCKET
????int?nNomalSocket;???//正常SOCKET
????int?nVer;??????????//SOCKET(Ver4/Ver5)
bool?bDirect;//
}?SOCKET_INFO;

static?SOCKET_INFO?g_SocketList[1024]?=?{0};????//SOCKET信息列表
static?int?g_nIndex?=?0;????????????????????????//SOCKET信息列表索引

//向列表中插入SOCKET信息
VOID?ins_list(const?SOCKET_INFO?socket_info)
{
????int?i?=?0;

????if?(g_nIndex?>=?1024)
g_nIndex?=?0;

????for?(i=0;?i????????if?(memcmp(&socket_info?&g_SocketList[i]?sizeof(SOCKET_INFO))?==?0)
{
????????????return;????//已經在list中了
}
????}
????memcpy(&g_SocketList[g_nIndex]?&socket_info?sizeof(SOCKET_INFO));
????g_nIndex++;
//InterlockedIncrement(&g_nIndex);
}

//從列表中刪除SOCKET信息
VOID?del_list(const?int?nSocket)
{
????int?i?=?0;
????SOCKET_INFO?*socket_info?=?NULL;

????for?(i=0;?i????????socket_info?=?&g_SocketList[i];
????????if?(socket_info->nProxySocket?==?nSocket?)?
{
int?Errno;
????????????//NextProcTable.lpWSPCloseSocket(socket_info->nProxySocket&Errno);
????????????NextProcTable.lpWSPCloseSocket(socket_info-

評論

共有 條評論