• <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>

            大熊的口袋

             

            網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer

            簡介:
            SendSpyer是一個(gè)控制臺程序。其接受2個(gè)輸入?yún)?shù):pid recordfile。其中pid是想要攔截網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的目標(biāo)進(jìn)程ID,recordfile是記錄攔截下來的網(wǎng)絡(luò)數(shù)據(jù)的文件路徑。
             
            原理:
            SendSpyer內(nèi)聯(lián)Hook了目標(biāo)進(jìn)程的send函數(shù),使之在對外發(fā)送數(shù)據(jù)時(shí)將數(shù)據(jù)寫入到制定路徑的文件中。
             
            缺點(diǎn):
            對于不使用winsock函數(shù)send來發(fā)送網(wǎng)絡(luò)數(shù)據(jù)的程序無法攔截其發(fā)生數(shù)據(jù)。處于效率和穩(wěn)定性的考慮,沒有對send函數(shù)的指令恢復(fù)做同步限制,可能會導(dǎo)致部分提交數(shù)據(jù)的遺漏。

            下載: /Files/zwp/SendSpyer.rar

            核心:

            void HookSend(LPVOID lParam)
            {

                RemoteParam
            * pRP = (RemoteParam*)lParam;
                HMODULE hUser32 
            = NULL;
                HMODULE hKernel32 
            = NULL;
                PFN_LOADLIBRARY pfnLoadlibrary 
            = (PFN_LOADLIBRARY)pRP->dwLoadLibrary;
                PFN_FREELIBRARY pfnFreeLibrary 
            = (PFN_FREELIBRARY)pRP->dwFreeLibrary;
                hUser32 
            = pfnLoadlibrary(pRP->szModuleName1);
                hKernel32 
            = pfnLoadlibrary(pRP->szModuleName2);

            #ifndef NDEBUG
                
            char szMsgContent[256];
                PFN_GETMODULEFILENAME pfnGetModuleName 
            = (PFN_GETMODULEFILENAME)pRP->dwGetModuleFileName;
                pfnGetModuleName(NULL, szMsgContent, 
            sizeof(szMsgContent));
            #endif    

                PFN_CREATEFILE pfnCreateFile 
            = (PFN_CREATEFILE)pRP->dwCreatefile;
                PFN_SETFILEPOINTER pfnSetFilePointer 
            = (PFN_SETFILEPOINTER)pRP->dwSetFilePointer;
                PFN_WRITEFILE pfnWriteFile 
            = (PFN_WRITEFILE)pRP->dwWriteFile;
                PFN_CLOSEHANDLE pfnCloseHandle 
            = (PFN_CLOSEHANDLE)pRP->dwCloseHandle;


                DWORD NextIpAddr 
            = 0;
                DWORD dwParamaAddr 
            = 0;
                SOCKET s;
                
            char * buf;
                
            int len;
                
            int flags;
                PFN_SEND pfnSend 
            = (PFN_SEND)pRP->dwSend;
                
            int RetValue = 0;
                __asm 
                
            {
                    MOV EAX,[EBP
            +8]
                    MOV [dwParamaAddr], EAX
                        MOV EAX,[EBP
            +12]          
                    MOV [NextIpAddr], EAX
                        MOV EAX,[EBP
            +16]
                    MOV [s], EAX
                        MOV EAX,[EBP
            +20]
                    MOV [buf],EAX
                        MOV EAX,[EBP
            +24]
                    MOV [len],EAX
                        MOV EAX,[EBP
            +28]
                    MOV [flags],EAX
                }


                unsigned 
            char szNewCode[10];
                
            int PramaAddr = (int)dwParamaAddr;
                szNewCode[
            4= PramaAddr>>24;
                szNewCode[
            3= (PramaAddr<<8)>>24;
                szNewCode[
            2= (PramaAddr<<16)>>24;
                szNewCode[
            1= (PramaAddr<<24)>>24;
                szNewCode[
            0= 0x68;

                
            int funaddr = (int)pRP->FunAddr - (int)pfnSend - 10 ;
                szNewCode[
            9= funaddr>>24;
                szNewCode[
            8= (funaddr<<8)>>24;
                szNewCode[
            7= (funaddr<<16)>>24;
                szNewCode[
            6= (funaddr<<24)>>24;
                szNewCode[
            5= 0xE8;


                PFN_GETCURRENTPROCESS pfnGetCurrentProcess 
            = (PFN_GETCURRENTPROCESS)pRP->dwGetCurrentProcess;
                PFN_WRITEPROCESSMEMORY pfnWriteProcessMemory 
            = (PFN_WRITEPROCESSMEMORY)pRP->dwWriteProcessMemory;
                
            if (!pfnWriteProcessMemory(pfnGetCurrentProcess(),
                    (LPVOID)pfnSend,
                    (LPCVOID)pRP
            ->szOldCode,
                    
            10,
                    NULL))
                
            {
            #ifndef NDEBUG
                    
            char szMsgCaption[8= {'R''e''s''u''m''!''\0'};
                    PFN_MESSAGEBOX pfnMessageBox 
            = (PFN_MESSAGEBOX)pRP->dwMessageBox;
                    pfnMessageBox(NULL, szMsgContent, szMsgCaption, MB_ICONINFORMATION 
            | MB_OK);
            #endif    
                }

                RetValue 
            = pfnSend(s, buf, len, flags);
                
            if (!pfnWriteProcessMemory(pfnGetCurrentProcess(),
                    (LPVOID)pfnSend,
                    (LPCVOID)szNewCode,
                    
            10,
                    NULL))
                
            {
            #ifndef NDEBUG
                    
            char szMsgCaption[8= {'H''o''o''k''!''\0'};
                    PFN_MESSAGEBOX pfnMessageBox 
            = (PFN_MESSAGEBOX)pRP->dwMessageBox;
                    pfnMessageBox(NULL, szMsgContent, szMsgCaption, MB_ICONINFORMATION 
            | MB_OK);
            #endif    
                }


                HANDLE fp 
            = pfnCreateFile(pRP->szFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
                
            if (fp == INVALID_HANDLE_VALUE)
                
            {
            #ifndef NDEBUG
                    
            char szMsgCaption[8= {'C''r''e''a''t''e''!''\0'};
                    PFN_MESSAGEBOX pfnMessageBox 
            = (PFN_MESSAGEBOX)pRP->dwMessageBox;
                    pfnMessageBox(NULL, szMsgContent, szMsgCaption, MB_ICONINFORMATION 
            | MB_OK);
            #endif    
                    __asm
                    
            {
                        MOV EDX, [NextIpAddr]
                        MOV EAX, [RetValue]
                        MOV ESP, EBP
                            POP EBP
                            ADD ESP, 1CH  
            //恢復(fù)堆棧
                            PUSH EDX
                            RET
                    }

                }


                DWORD i 
            = 0;
                DWORD nWritten 
            = 0;
                
            while (buf[i] != 0)
                    i
            ++;
                pfnSetFilePointer(fp, 
            0, NULL, FILE_END);
                
            if (!pfnWriteFile(fp, (LPCVOID)buf, i, &nWritten, NULL))
                
            {        
            #ifndef NDEBUG
                    
            char szMsgCaption[8= {'W''r''i''t''e''!''\0'};
                    PFN_MESSAGEBOX pfnMessageBox 
            = (PFN_MESSAGEBOX)pRP->dwMessageBox;
                    pfnMessageBox(NULL, szMsgContent, szMsgCaption, MB_ICONINFORMATION 
            | MB_OK);
            #endif    
                    pfnCloseHandle(fp);
                    __asm
                    
            {
                        MOV EDX, [NextIpAddr]
                        MOV EAX, [RetValue]
                        MOV ESP, EBP
                            POP EBP
                            ADD ESP, 1CH  
            //恢復(fù)堆棧
                            PUSH EDX
                            RET
                    }

                }


                pfnCloseHandle(fp);
                pfnFreeLibrary(hKernel32);
                pfnFreeLibrary(hUser32);

                __asm
                
            {
                    POP EDI     
                        POP ESI     
                        POP EBX

                        MOV EDX, [NextIpAddr]
                    MOV EAX, [RetValue]
                    MOV ESP, EBP
                        POP EBP
                        ADD ESP, 1CH  
            //恢復(fù)堆棧
                        PUSH EDX
                        RET
                }



            }

            posted on 2008-11-15 00:25 大熊的口袋 閱讀(3008) 評論(5)  編輯 收藏 引用 所屬分類: win32

            評論

            # re: 網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer 2008-11-17 15:52 不懂

            運(yùn)行了一下,就什么也看不到了,后怕,是不是BD啊  回復(fù)  更多評論   

            # re: 網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer 2008-11-18 08:35 zwp

            @不懂
            這是一個(gè)控制臺程序,且需要帶參數(shù)運(yùn)行的。
            估計(jì)你只是簡單雙擊運(yùn)行了,那程序只會提示你正確的用法,然后退出。
            建議先打開windows cmd控制臺,然后輸入該SendSpyer pid recordfile,參數(shù)的意義請參考程序顯示的幫助。
              回復(fù)  更多評論   

            # re: 網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer[未登錄] 2008-11-18 08:49 Gohan

            算是inlinehook嗎?  回復(fù)  更多評論   

            # re: 網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer 2008-11-18 12:23 zwp

            @Gohan
            算是啦~~哈哈,不過是改的開頭10字節(jié)而已。容易被發(fā)現(xiàn)~  回復(fù)  更多評論   

            # re: 網(wǎng)絡(luò)數(shù)據(jù)提交攔截器-SendSpyer 2008-12-14 21:53 黃參

            攔截其他用戶  回復(fù)  更多評論   

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            win32 & debug

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            狠狠色丁香久久婷婷综合蜜芽五月| 99久久精品毛片免费播放| 久久影院久久香蕉国产线看观看| 日本一区精品久久久久影院| 久久99精品久久久久久9蜜桃| 亚洲国产精品无码久久九九| 91精品国产91久久久久福利| 精品久久久久久无码免费| 亚洲午夜久久久影院| 久久天天躁狠狠躁夜夜2020老熟妇| 久久久久国产精品嫩草影院| 久久精品国产一区二区三区日韩| 久久亚洲AV成人无码软件| 天天久久狠狠色综合| 老色鬼久久亚洲AV综合| 久久久精品国产Sm最大网站| 2020久久精品国产免费| av色综合久久天堂av色综合在| 久久久久久青草大香综合精品| 国内精品久久国产大陆| 浪潮AV色综合久久天堂| 久久久久亚洲av成人网人人软件 | 思思久久精品在热线热| 日本久久久久久中文字幕| 久久香蕉国产线看观看精品yw| 老男人久久青草av高清| 久久久久国色AV免费观看| 伊人久久精品线影院| 久久国产精品-国产精品| 久久精品无码一区二区无码| 精品一二三区久久aaa片| 亚洲日本va午夜中文字幕久久 | 亚洲天堂久久精品| 欧美777精品久久久久网| 伊人久久精品线影院| 国产AV影片久久久久久 | 久久久久九国产精品| 久久无码国产| 久久亚洲精品成人无码网站| 久久精品国产亚洲AV久| 久久亚洲AV成人无码软件|