windows 手動添加服務
方法一:修改註冊表
在註冊表編輯器,展開分支"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services",在右側窗格中顯示的就是本機安裝的服務項。如果要新建服務,只須點擊"編輯→新建→項" ,然後爲此項命名,如"test";然後右擊該項,選擇"新建→字符串值"或"新建→Dword值"即可。添加一個服務項目具體需要添加的鍵值如下: "DisplayName",字符串值,對應服務名稱;
"Description",字符串值,對應服務描述;
"ImagePath",字符串值,對應該服務程序所在的路徑;
"ObjectName",字符串值,值爲"LocalSystem",表示本地登錄;
"ErrorControl",Dword值,值爲"1";
"Start",Dword值,值爲2表示自動運行,值爲3表示手動運行,值爲4表示禁止;
"Type",Dword值,應用程序對應10,其它對應20。
另外,還要在"test"項下新建一個"Enum"項。如果有些必須通過srvany來加載的還必須 添加另外的Parameters子項在該項中提供詳細的要加爲服務的程序所在的路徑。而上面的那個 路徑就需要指到srvany所在的路徑。
方法二:腳本操作
sc create myserver binpath= c:\windows\Sc\myserver.exe
sc config myservers tart= auto
sc start myserver
方法三: 寫註冊表文件
現在很多的木馬、後門、蠕蟲病毒都是通過修改註冊表中的RUN鍵值來實現自啓動。
但是這種自啓動模式不是很隱蔽的,稍微懂點安全的人,一般發現電腦被黑,都會查看RUN鍵值的。
於是系統服務便成爲了一種相對隱蔽的自啓動模式。比如衝擊波殺手就採用系統服務來自啓動病毒程序。
現在添加系統服務的工具很多,最典型的就是netservice。但是我們這裏講的是手工添加系統服務,所以工具的使用不在本文的討論範圍之內。
WINDOWS裏的很多東西都是跟註冊表息息相關的,系統服務也不例外。
系統服務跟以下的註冊表幾個項目相關:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services
我們完全可以找到在系統服務中已註冊的服務的鍵值來依樣畫葫蘆。
在以上任何註冊表列中添加一個新項:
名字是你想要添加系統服務的名字,比如Backdoor。
在BACKDOOR項下新建一個字符串,數值名稱Displayname 數值數據爲要添加服務的
名稱Backdoor。
下面列出一個表,會直觀一些:
名稱 類型 數據 備註
Displayname REG_SZ 想要添加服務的名稱 想要添加服務的名稱
Description REG_SZ 服務的描述 服務的描述
ImagePath REG EXPAND SZ 程序的路徑
Start REG_DWORD 0,2,3,4 2代表自動啓動,3代表手動啓動服務.4代表禁用服務,0代表系統對底層設備驅動(一般不需要這個)
ErrorControl REG_DWORD 1
Type REG_DWORD 10 or 20 一般應用程序都是10,其他的對應20
ObjectName REG_SZ LocalSystem 顯示本地登陸
注意:在XP/2003下可以完全手工來添加REG EXPAND SZ類型。在XP/2003下直接修改ImagePath 鍵值就可以了。但是在WIN2000下卻不可以。原因我也不清楚:(。但是在WIN2000下我們寫一個REG來直接註冊系統服務,這樣WIN2000下添加系統也能很輕鬆了。這裏同樣需要注意的是註冊表文件裏的ImagePath的數值類型必須是HEX(16進制)。可以拿WINHEX來把程序的絕對路徑轉換成16進制的。每一個數值用逗號擱開。比如我的ImagePath鍵值是C:\winnt\nukegroup.exe那就應該轉換成:
63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65(無空格)
打開記事本,敲入以下內容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\"want to create the name of service"]
"Type"=dword:00000010
"Start"=dword:00000002
"ErrorControl"=dword:00000001
"ImagePath"=hex(2):63,3A,5C,77,69,6E,6E,74,5C,6E,75,6B,65,2E,65,78,65
"DisplayName"="SRVTEST"
"ObjectName"="LocalSystem"
"Description"="系統服務測試"
把以上信息保存爲addsrv.reg,我們就可以依靠命令來導入註冊表,從而達到添加系統服務的目的。
我們在命令控制檯輸入regedit /s addsrv.reg,等機器重新啓動,這個服務就被成功添加了。
但是我在真正實驗的時候就遇到困難了。ImagePath的數值是亂碼(圖1)(圖2),
怎麼想也不明白。但是這時可以把亂碼修改成絕對路徑了。如果直接把REG信息寫成這樣
"ImagePath"=hex(2):C:\WINNT\NUKEGROUP.EXE
其他的鍵值都可以添加,這個鍵值就不可以了?總之我們可以先添加亂碼的ImagePath,然後再修改成C:\winnt\nukegroup.exe 這樣也不是不可能的。就是在命令行下來添加就很麻煩了。(圖3)
以上是Windows 2000手工添加系統服務的方法,對於Windows 98 註冊表結構是不一樣的,但是Windows 98仍然可以通過註冊表來實現添加系統服務,而且還要更簡單一些。
在項目“HKLM/SOFTWARE/Microsoft/WindowsCurrentVersion/RunServices”下添加一個新字符串數值。
比如,如果程序的名字叫做“BACKDOOR”,就建立一個名爲“BACKDOOR”的字符串數值,然後在數據域中輸入執行程序的完整路徑。
手工添加一個系統服務就這麼簡單,手工刪除系統也是一個道理。通過註冊表來實現,這裏就不多說了。
[http://www.idcs.cn/support/html/network/20090702/397.html]