国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

VC下揭開“特洛伊木馬”的隱藏面紗

2019-11-17 05:08:37
字體:
供稿:網(wǎng)友
一、引言

  “特洛伊木馬”曾在網(wǎng)上造成很大恐慌,此類黑客程序通過欺騙手段在普通網(wǎng)絡(luò)用戶端安裝木馬的服務(wù)端,使用戶的計(jì)算機(jī)在上網(wǎng)時(shí)留有后門,而黑客則可以通過這個(gè)后門對(duì)被感染的計(jì)算機(jī)隨心所欲地進(jìn)行監(jiān)視、破壞。
顯然這種黑軟對(duì)于普通網(wǎng)絡(luò)用戶的危害是非常嚴(yán)重的。

  就本質(zhì)而言黑客軟件仍然屬于應(yīng)用程序,是基于套接字的網(wǎng)絡(luò)通訊程序。因此黑客能成功攻擊被感染計(jì)算機(jī)的一個(gè)非常必要的先決條件就是此時(shí)被攻擊方已經(jīng)有木馬程序的服務(wù)端在運(yùn)行。由于木馬程序是一種惡意程序,能在被攻擊者沒有察覺的情況下靜靜啟動(dòng)運(yùn)行為攻擊者打開后門,故顯然不能象其他程序一樣堂而皇之的顯示在任務(wù)欄和任務(wù)列表中,否則會(huì)立即為用戶所察覺而將其關(guān)閉,也就失去了為攻擊者提供后門的作用。本文下面就針對(duì)其隱藏程序的機(jī)理展開討論。

  二、程序在任務(wù)欄中的隱藏原理

  程序在任務(wù)欄的隱藏比較簡(jiǎn)單,首先要保證程序主界面的隱藏,一般是通過修改應(yīng)用程序類的初始化實(shí)例函數(shù)InitInstance()的ShowWindow()語句的SW_SHOW參數(shù)為SW_HIDE來實(shí)現(xiàn)的。主界面隱藏的同時(shí)任務(wù)欄雖然也會(huì)消失,但在程序啟動(dòng)時(shí)會(huì)閃一下,因此需要修改程序的擴(kuò)展屬性。一種方法是SDK的寫法,即直接利用GetWindowLong()獲取到當(dāng)前的擴(kuò)展屬性然后通過邏輯運(yùn)算去掉原有的WS_EX_APPWINDOW屬性,并新添加一個(gè)WS_EX_TOOLWINDOW屬性,這樣系統(tǒng)會(huì)將其認(rèn)為是一個(gè)工具條窗口而不會(huì)再在任務(wù)欄中加以顯示。最后需要將修改過的擴(kuò)展屬性通過SetWindowLong()函數(shù)將其寫回。這兩個(gè)函數(shù)的聲明分別如下:

LONG GetWindowLong(HWND hWnd,int nIndex);
LONG SetWindowLong(HWND hWnd,int nIndex,LONG dwNewLong);

  另一種很簡(jiǎn)便的是MFC的寫法:在程序框架類的預(yù)創(chuàng)建窗口函數(shù)里通過直接對(duì)CREATESTRUCT結(jié)構(gòu)對(duì)象的邏輯操作而將程序?qū)傩赃M(jìn)行改變:

cs.style=WS_POPUP;
cs.dwExStyle=WS_EX_TOOLWINDOW;

  這兩種寫法雖然表現(xiàn)形式各不相同,其本質(zhì)都是一樣的。

  三、程序在任務(wù)列表中的隱藏原理

  任務(wù)列表(Ctrl+Alt+Del時(shí)彈出的對(duì)話框)顯示了當(dāng)前系統(tǒng)正在運(yùn)行的一些應(yīng)用程序,假如實(shí)現(xiàn)了上一步,雖然在任務(wù)欄看不見程序,但有經(jīng)驗(yàn)的用戶可以通過觀察任務(wù)列表而發(fā)現(xiàn)一些值得懷疑的應(yīng)用程序而在此將其關(guān)閉。所以大多數(shù)黑軟也都通過較復(fù)雜的手段實(shí)現(xiàn)了自身在任務(wù)列表中的隱藏,使被發(fā)現(xiàn)的機(jī)會(huì)大大降低。

  在Win9x/2000中,一般每個(gè)應(yīng)用程序都要通過一個(gè)API(應(yīng)用程序接口)函數(shù)RegisterServicePRocess()向系統(tǒng)申請(qǐng)注冊(cè)成為一個(gè)服務(wù)進(jìn)程,并且也是通過這個(gè)函數(shù)注銷其服務(wù)進(jìn)程來結(jié)束這個(gè)服務(wù)進(jìn)程的運(yùn)行。假如一個(gè)進(jìn)程注冊(cè)為一個(gè)服務(wù)進(jìn)程,通過Ctrl+Alt+Del就可以在任務(wù)列表里看見該進(jìn)程的標(biāo)題。而假如一個(gè)進(jìn)程運(yùn)行了但沒有向系統(tǒng)申請(qǐng)注冊(cè)成為服務(wù)進(jìn)程那么就不會(huì)在任務(wù)列表里顯示。黑軟也正是利用這個(gè)原理使自身在運(yùn)行時(shí)能在任務(wù)列表中實(shí)現(xiàn)隱藏。該函數(shù)存放于系統(tǒng)內(nèi)核Kernel32.dll中,具體聲明如下:

DWord RegisterServiceProcess(DWORD dwProcessId,DWORD dwType);
  其第一個(gè)參數(shù)指定為一個(gè)服務(wù)進(jìn)程的進(jìn)程標(biāo)識(shí),假如是0則注冊(cè)當(dāng)前的進(jìn)程;第二個(gè)參數(shù)指出是注冊(cè)還是注銷當(dāng)前的進(jìn)程,其狀態(tài)分別為:RSP_SIMPLE_SERVICE和RSP_UNREGISTER_SERVICE。黑軟一般是在程序啟動(dòng)初始化時(shí)首先從Kernel32.dll動(dòng)態(tài)連接庫中將RegisterServiceProcess()函數(shù)加載到內(nèi)存,然后再通過該函數(shù)將程序從任務(wù)列表中隱藏:

//從Kernel32.dll中加載RegisterServiceProcess()
HMODULE m_hKernel=::GetModuleHandle("Kernel32.DLL");

RSP m_rsp=(RSP)::GetProcAddress(m_hKernel,"RegisterServiceProcess");
m_rsp(::GetCurrentProcessId(),1);//此時(shí)為隱藏,當(dāng)?shù)诙€(gè)參數(shù)為0時(shí)顯示

  另外,還有一部分黑軟是通過ShowWindowAsync()函數(shù)啟動(dòng)一個(gè)新的線程來顯示一個(gè)新窗口的。該函數(shù)的原形為:

BOOL ShowWindowAsync(HWND hWnd,int nCmdShow);
  而黑軟正是鉆了該函數(shù)的第二個(gè)參數(shù)可以設(shè)置窗體顯示狀態(tài)的空子,在設(shè)置成SW_HIDE時(shí)就可以使目標(biāo)窗體(黑軟)從任務(wù)列表中隱藏。

  四、小結(jié)

  以上就是Win9x/2000下的黑客程序所具備的一些基本功能,在此基礎(chǔ)上我們可以借助于其實(shí)現(xiàn)技巧來編寫出一些諸如后臺(tái)監(jiān)控之類的實(shí)用程序。并且可以通過對(duì)黑客類軟件的隱藏機(jī)理的分析能使廣大用戶對(duì)此類黑軟采取一些必要的措施,通過加強(qiáng)防范來使自己的損失防患于未然。 更多文章 更多內(nèi)容請(qǐng)看病毒/木馬/蠕蟲專題,或

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 上林县| 罗甸县| 额济纳旗| 绩溪县| 雷波县| 松溪县| 通州市| 兴仁县| 丹东市| 祁门县| 湘潭县| 都匀市| 塔河县| 龙游县| 专栏| 巴塘县| 新和县| 康定县| 巴彦淖尔市| 五寨县| 井冈山市| 梅河口市| 泽普县| 昌平区| 德阳市| 洪洞县| 日照市| 陆丰市| 顺义区| 内乡县| 抚顺县| 寿阳县| 子洲县| 开封县| 金华市| 聂拉木县| 敦化市| 伽师县| 杭锦后旗| 镇康县| 嵩明县|