怎麼去寫木馬程式 匿名使用者 1級 2005-12-15 回答

首先得先了解三個相關的概念:程序,執行緒和服務。

程序:一個正常的Windows應用程式,在執行之後,都會在系統之中產生一個程序,同時,每個程序,分別對應了一個不同的PID(Progress ID, 程序識別符號)這個程序會被系統分配一個虛擬的記憶體空間地址段,一切相關的程式操作,都會在這個虛擬的空間中進行。

執行緒:一個程序,可以存在一個或多個執行緒,執行緒之間同步執行多種操作,一般地,執行緒之間是相互獨立的,當一個執行緒發生錯誤的時候,並不一定會導致整個程序的崩潰。

服務:一個程序當以服務的方式工作的時候,它將會在後臺工作,不會出現在任務列表中,但是,在Windows NT/2000下,你仍然可以透過服務管理器檢查任何的服務程式是否被啟動執行。

想要隱藏木馬的伺服器端,可以偽隱藏,也可以是真隱藏。偽隱藏,就是指程式的程序仍然存在,只不過是讓他消失在程序列表裡。真隱藏則是讓程式徹底的消失,不以一個程序或者服務的方式工作。

偽隱藏的方法,是比較容易實現的,只要把木馬伺服器端的程式註冊為一個服務就可以了,這樣,程式就會從任務列表中消失了,因為系統不認為他是一個程序,當按下Ctrl+Alt+Delete的時候,也就看不到這個程式。但是,這種方法只適用於Windows9x的系統,對於Windows NT,Windows 2000等,透過服務管理器,一樣會發現你在系統中註冊過的服務。難道偽隱藏的方法就真的不能用在Windows NT/2000下了嗎?當然還有辦法,那就是API的攔截技術,透過建立一個後臺的系統鉤子,攔截PSAPI的EnumProcessModules等相關的函式來實現對程序和服務的遍歷呼叫的控制,當檢測到程序ID(PID)為木馬程式的伺服器端程序的時候直接跳過,這樣就實現了程序的隱藏,金山詞霸等軟體,就是使用了類似的方法,攔截了TextOutA,TextOutW函式,來截獲螢幕輸出,實現即時翻譯的。同樣,這種方法也可以用在程序隱藏上。

當程序為真隱藏的時候,那麼這個木馬的伺服器部分程式執行之後,就不應該具備一般程序,也不應該具備服務的,也就是說,完全的溶進了系統的核心。也許你會覺得奇怪,剛剛不是說一個應用程式執行之後,一定會產生一個程序嗎?的確,所以我們可以不把他做成一個應用程式,而把他做為一個執行緒,一個其他應用程式的執行緒,把自身注入其他應用程式的地址空間。而這個應用程式對於系統來說,是一個絕對安全的程式,這樣,就達到了徹底隱藏的效果,這樣的結果,導致了查殺駭客程式難度的增加。

出於安全考慮,我只給出一種透過註冊服務程式,實現程序偽隱藏的方法,對於更復雜,高階的隱藏方法,比如遠端執行緒插入其他程序的方法。

怎麼去寫木馬程式 天青色等煙雨。 1級 2005-12-14 回答

這個需要學會程式設計之後才能寫出來。