自訂刪除腳本是當EFix內的刪除病毒檔資料庫內沒有資料時,而在EFix版本沒有更新的情形下所使用的一種自定義刪除方式。

自定義腳本刪除方式

使用時機:
這個是因應現在病毒種類那麼多種,其中如果碰到EFix沒有刪除的檔案或登錄值時
可以使用自己定義腳本的方式讓EFix去刪除。

好處是不用拆解本體後在打包,增加安全性
並且使用方便,如果有碰到大量流行的病毒我沒時間加的話可以先使用腳本方式清除
就只要腳本加一個主程式就可以了,不用解釋軟體怎麼操作解釋半天。

使用方式:
將固定格式的腳本內容輸入至記事本內
然後存檔,將檔案名稱取名為ESCRIPT.TXT (大小寫不拘)後
將儲存的ESCRIPT文字檔圖示拖曳到EFix主程式圖示上即可。
剩下的和直接執行時一樣。

 

格式:
File::
Driver::
Registry::
Winsock::

說明
1. Driver::

如果你是要刪除驅動、服務項目的話
腳本格式使用就如下:

Driver:: (大小寫不拘,但D前面不能有空白,::後面也不能有東西)
123456


上面例子會將服務 /驅動項名稱為123456的值刪除掉

至於服務名稱怎麼看?
EFix的報告裡面有一項是 驅動 / 服務項 顯示如下:
S4  AntiVirMailService;AntiVir PersonalEdition Premium MailGuard;檔案名稱屬性

這邊看到的紅色字樣就是服務名稱,而藍色部分所顯示的是服務描述

如果是SRENG這邊看的話則是
[AntiVir PersonalEdition Premium MailGuard / AntiVirMailService][Stopped/Disabled]
這樣應該就可以知道怎麼樣去看服務驅動名稱了


2.File::
如果你是要刪除檔案,腳本使用格式如下:

File:: (大小寫不拘、F前面不能有空白、::後面不能有東西)
c:\windows\123.exe
c:\program files\345.exe
c:\kill5566.exe
d:\i hate kav.com


這邊的話就是你要刪除的檔案路徑和名稱打上去就可以
但有限制

首先不支援萬用字元以及變數名稱
EX:
File::
c:\windows\123.exe
%systemroot%\456.exe
c:\windows\???.exe
c:\program files\*.exe

這樣在處理時碰到%systemroot%\456.exe和c:\windows\???.exe以及c:\program files\*.exe時會自動跳過,但是會顯示刪除該檔案。
這一點我會在修正

再來是不用雙引號
EX:
File::
"c:\program files\123 456.exe"
上面的引號不用

然後是盡量避免刪除特殊字元
EX:
File::
c:\[^$#.exe

因為EFix是運作在cmd模式下的,所以如果碰到特殊字元時有可能會有不可預期的後果,盡量避免

再來就是沒事別亂用、這邊顯示的檔案除非有特別保護,不然都刪的掉
如果你將系統檔也列到裡面的話一樣會刪...
ex:
File::
c:\windows\system32\services.exe

前面有提到EFix會使用pending的方式刪除檔案
此方式優先權很高,所以不管是什麼系統檔放在這裡面都會被刪除...
雖然我有設安全清單,但還是會有危險請注意。

 

3.Registry::
如果是要刪除登錄值,則使用下列格式:
registry:: (大小寫不拘、r前面不能有空白、::後面不能有東西)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"avgnt"=-
[-HKEY_LOCAL_MACHINE\EFix]
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\system32\\userinit.exe,"


這邊是刪除登錄值的格式,其實這個格式就是當你開啟登錄編輯器之後按匯出之後的格式

如果你是要刪除字串值像HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run機碼底下的字串值avgnt時
就用
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"avgnt"=-
如果你是要刪除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run整段機碼的話
就是用
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

-號就是刪除的意思,而如果是要改登錄值的話
像上面userinit那邊
就是
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\system32\\userinit.exe,"

假設要改成explorer.exe
就是
[HKEY_LOCAL_MACHINE\software\microsoft\windows nt\currentversion\winlogon]
"userinit"="c:\\windows\\explorer.exe,"

注意到上面、如果是要修改檔案路徑和名稱時,有碰到\的地方要用兩個\\,這是因為正則表示法的關係
正則表示法請參閱linux使用手冊

而使用registry的限制是該登錄值不能超過一行
EX:
registry::
[HKEY_LOCAL_MACHINE\software\EFix]
"test"=hex(2):00,01,02,03,04,05,06 \\
07,08,09,0A

這樣EFix只會匯入"test"=hex(2):00,01,02,03,04,05,06 \\這一行,下面那一行就自動去掉...這是BUG目前沒技術修,以後技術到家了在處理


4.winsock::
如果你要還原winsock的話
就在腳本內容輸入下列格式
winsock:: (w前面不能有空白、::後面不能有東西)

這樣就可以回復預設值
但也有限制

此指令限定於windows xp sp2以上才有用...如果是sp1或者是win2000的話會提示你要下載winsockfix修正。