• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
            簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            這問(wèn)題都老生常談了,大家對(duì)于技術(shù)動(dòng)向的跟蹤并不緊密呀,呵呵……
            貼段我自己的代碼,是用來(lái)枚舉機(jī)器中所有的winsock對(duì)象及其相關(guān)進(jìn)程的,供參考。稍做修改可滿足各種需要。

            #include "stdafx.h"
            #include <stdio.h>
            #include <windows.h>
            #pragma comment(lib, "ws2_32.lib")
            typedef struct _HandleInfo
            {
            USHORT wPid;
            USHORT wCreatorBackTraceIndex;
            BYTE?? objType;
            BYTE?? handleAttibs;
            USHORT handleOffset;
            DWORD? dwKeObject;
            ULONG? dwGrantedAccess;

            }HANDLEINFO, *PHANDLEINFO;


            int main(int argc, char* argv[])
            {
            WSADATA wd;
            unsigned int ret = WSAStartup(0x0202, &wd);

            typedef DWORD (WINAPI *PQuerySystemInformation)(DWORD, PBYTE, DWORD, PDWORD);

            PQuerySystemInformation pQuerySystemInformation = (PQuerySystemInformation)GetProcAddress(GetModuleHandle("ntdll.dll"), "ZwQuerySystemInformation");
            if(pQuerySystemInformation == NULL)
            {
            MessageBox(NULL, "Can't find NtQuerySystemInformation int Ntdll.dll!", "Failed", 0);
            return 1;
            }

            BYTE *buf = new BYTE[20];
            PHANDLEINFO phandleinfo = NULL;
            DWORD dwRetSize = 0;
            DWORD dwNum = 0;
            unsigned int i;

            ret = pQuerySystemInformation(16, buf,20,&dwRetSize);
            if(0 != ret)
            {
            if(dwRetSize > 0)
            {
            //dwNum = dwRetSize/sizeof(HANDLEINFO);
            delete [] buf;
            buf = new BYTE[dwRetSize];
            ret = pQuerySystemInformation(16, buf, dwRetSize, &dwRetSize);
            if(0 != ret)
            {
            printf("Can't get any handles!\n");
            goto end;
            }
            }
            else
            {
            goto end;
            }
            }
            dwNum = *(DWORD*)buf;
            phandleinfo = (PHANDLEINFO)(buf+4);

            for(i=0;i<dwNum;i++)
            {
            //static int iCount = 0;
            //static WORD wPid = -1;
            HANDLEINFO *pSeek = phandleinfo + i;
            if((pSeek->objType==0x1a) && (pSeek->wPid))
            {
            //iCount++;
            //wPid = pSeek->wPid;

            HANDLE hSrcProcess;
            hSrcProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE, pSeek->wPid);
            if(hSrcProcess == NULL)
            continue;

            __try
            {

            SOCKET hSock;
            ret = DuplicateHandle(hSrcProcess, (HANDLE)(pSeek->handleOffset), GetCurrentProcess(), (HANDLE *)&hSock, STANDARD_RIGHTS_REQUIRED,TRUE,0);

            if(ret == 0)
            {
            int errcode = GetLastError();
            continue;
            }
            sockaddr_in in = {0};
            in.sin_family = AF_INET;
            int dwSize = sizeof(in);
            if(SOCKET_ERROR != getsockname(hSock, (sockaddr *)&in, &dwSize))
            {
            char name[0x100] = {0};

            HMODULE hDll = LoadLibrary("psapi.dll");
            typedef DWORD (WINAPI *PGETMODULEFILENAMEEX)(HANDLE, HMODULE, LPTSTR, DWORD);
            //typedef BOOL (WINAPI *PENUMPROCESSMODULES)(HANDLE, HMODULE*, DWORD, LPDWORD);
            PGETMODULEFILENAMEEX pfunc = (PGETMODULEFILENAMEEX)GetProcAddress(hDll, "GetModuleFileNameExA");
            //PENUMPROCESSMODULES penum = (PENUMPROCESSMODULES)GetProcAddress(hDll, "EnumProcessModules");
            //DWORD dwCb, dwRet;
            //HMODULE module[1000];
            //ret = penum(hSrcProcess

            pfunc(hSrcProcess, NULL, name, 0x100);


            FreeLibrary(hDll);

            printf("socket:%4d? port:%4d? PID:%4d(%s)\n", pSeek->handleOffset, ntohs(in.sin_port), pSeek->wPid, name);

            }
            }
            __finally
            {
            CloseHandle(hSrcProcess);
            }
            }

            }

            getchar();

            end:
            delete [] buf;
            return 0;
            }

            ?

            本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/hwman/archive/2005/01/14/254120.aspx

            国产激情久久久久久熟女老人| 日韩精品无码久久久久久| 色综合久久夜色精品国产| 久久强奷乱码老熟女| 欧洲性大片xxxxx久久久| 97精品伊人久久大香线蕉app| 久久精品无码专区免费东京热 | 亚洲日本va中文字幕久久| 久久久久精品国产亚洲AV无码| 久久中文精品无码中文字幕| 精品久久久无码中文字幕天天| 久久精品国产99国产精品亚洲| 国产A级毛片久久久精品毛片| 亚洲精品乱码久久久久久蜜桃图片| 久久99精品综合国产首页| 久久午夜无码鲁丝片秋霞| 久久精品国产99国产精品| 国产精品久久久久久福利69堂| 久久久久久久久久久久久久| 欧美麻豆久久久久久中文| 97久久超碰国产精品旧版 | 久久一日本道色综合久久| 久久无码精品一区二区三区| 色偷偷888欧美精品久久久| 久久久久高潮毛片免费全部播放| 亚洲欧美精品一区久久中文字幕 | 亚洲国产精品狼友中文久久久| 伊人色综合久久天天| 精品国产乱码久久久久久呢| 国产精品久久久久久福利69堂| 久久精品人人做人人爽电影蜜月| 国产精品一久久香蕉产线看| 久久超碰97人人做人人爱| 国产激情久久久久影院老熟女| 女人高潮久久久叫人喷水| 99久久免费国产精精品| 久久一日本道色综合久久| 久久久综合香蕉尹人综合网| 久久亚洲高清观看| 久久精品夜夜夜夜夜久久| 狠狠色婷婷久久一区二区|