幫掃毒軟體減肥



贊助商連結


unknow8877
2009-04-11, 07:22 AM
使用了芬蘭 F-Secure 的掃毒軟體有一段時間了...

對於未知病毒及 rootkit , 惡意軟體的掃描辨識能力相當高...

因為有好幾顆不同的掃描引擎在交叉掃描 , 這樣做的好處是掃描的結果非常準確 ,

但是因為要抓出未知的病毒 , 使用沙箱等技術來做行為分析 , 在掃描時會耗掉較多的系統資源...

除了這個問題外 , F-Secure 大概是我所用過最滿意的掃毒軟體 ....

舉個例子來說 : 當掃毒軟體掃到病毒時 , 當病毒已常駐在記體體中 , 有時會移除不掉 , 只能看著掃毒軟體一直跳警告視窗


病毒每產生一個執行檔的病毒複本在硬碟內時 , 掃毒軟體就會跳出警告視窗並提示已隔離 , 由於記憶體的病毒行程沒清理掉 ,


因此只有掃描及隔離病毒檔案的能力 , 每格幾秒就出現一次警告 , 很煩 , 要不然就是一定要重新開機進入到安全模式下進行掃描

才能完整移除掉病毒 ; 但對於 F-Secure 來說 , 他內建的 BlackLight 技術就是專們來偵測及疑除正在運作中的病毒及Rootkit

只要掃的到 , 就移除的掉 , 根本不需要另外再進入安全模式 , 這就是技術上的差別....

這也是我最滿意的一部份....


但最近在幾次不同環境的電腦上測試時 , 皆發現一個相同的問題…

就是在進行全機掃描時 FSSM32.exe 會吃掉大量的記憶體及CPU資源 … ( memory leaks )

在實體記憶體只有 256MB 的電腦上, FSSM32 可能佔掉 5x – 9x MB

而在實體記憶體插滿2G,3G的電腦上 , FSSM32 也可能會瞬間使用掉 1xx – 2xx MB 的記憶體

在 FSCS 7.x 版時 , 也有這樣的問題 (吃掉1xxMB 記憶體) , 官方甚至有出了個 patch 來解決….

但在 8 版 , 個人覺得問題似乎依然存在….

依照 F-Secure 官網論壇討論所述(註1) FSSM32.EXE 應該是擔負各掃描引擎間協調運作的管理程式

當在處理未知病毒時,FSSM32可能會隨掃描物件需求特性而向作業系統動態配置記憶體等資源來進行掃描分析(沙箱模擬?!) ,可能為了掃描的效能及可靠性,FSSM32並未謹慎的管理系統資原,因此而造成了記憶體及CPU資源的大量耗用

因此提出了一個想法 , 如果能在 FSSM32.exe 與作業系統中間另外串接一個中介軟體 , 當 fssm32.exe 有需要向作業系統要求配置記憶體空間時 , 由中介軟體負責fssm32與作業系統之間記憶體及相關資源的配置管理 , 以避免 fssm32 無止盡的濫用系統資源

這樣做的好處是 , 可以限制住 f-secure 在做全機掃描時所耗用的系統資源 , 同一個時間使用者還是可以正常做其它的事情 , 而不致因 fssm32全速工作而導至系統停擺 , 甚麼事也不能做… ( 目前使用者反應最常見的情況之一 )

這樣的缺點是 , 由於限制住了 FSSM32 正常( 異常?!) 工作時所需要的大量資源 , 掃描的效能可能會降低 , 對於未知的病毒 , 也許無法正常誘使病毒在沙箱環境中執行該有的反應 ; 且此技術需要與作業系統核心整合 , 也有與F-secure原廠授權侵權的可能 …..

分析了幾天 fssm.exe 的運作模式 , 原本應該要著手撰寫這樣的中介程式來測試 , 不過剛好找到 Minimem 這個免費軟體 , 他主要的作用就是可以針對運作中的 process 去做記憶體最佳化的管理 , 雖然跟原本我預期的完整管理(可以明確設定記憶體使用上限) 仍有些出入 , 但是剛好也可以先拿來驗證這個理論是否能有效果….

Minimem (Freeware) 官方網址 http://minimem.kerkia.net/Download.aspx

目前版本為 Minimem 1.2.2

安裝前需要先安裝 MS .NET Framework 3.5

以下為幫 FSSM32 減肥的實際片段:

1. 在未啟用 minimem 工具來管理 fssm32.exe 時 , 在這台記憶體插了3G 的電腦上 , 只要執行全機掃描 , 只要幾秒鐘的時間記憶體就會跑上 2xx MB

http://3.bp.blogspot.com/_mkT87q1qDW0/SdymzNkw2HI/AAAAAAAAAU8/gzsawZn3nMY/s400/ScreenHunter_01+Apr.+01+21.21.gif

2. 啟用 minimem , 並將 fssm32 納入控管 ( 此時 fssm32 已經把玩了 210312K 的記憶體 )

http://1.bp.blogspot.com/_mkT87q1qDW0/SdynHv48t1I/AAAAAAAAAVE/U6avh94KB5Q/s400/ScreenHunter_07+Apr.+04+12.01.gif

3. 套用設定後 , 5 秒後 minimem 接手 fssm32.exe 的記憶體使用管理 , 硬是把記憶體縮水至 28,864K

之後雖然fssm32.exe還是企圖要爭取更多的記憶體 , 但似乎都被 minimem 控制在 1x – 4x MB 之間…

http://4.bp.blogspot.com/_mkT87q1qDW0/Sdynao4fK0I/AAAAAAAAAVM/eeIXLJ-c_TM/s400/ScreenHunter_08+Apr.+04+12.01.gif

4. 當做完全機掃描時 FSSM32.EXE 功成身退隱居幕後 , 僅佔 704K , 差點讓人忘了他的存在….

http://2.bp.blogspot.com/_mkT87q1qDW0/SdynmHZT9YI/AAAAAAAAAVU/BPzg0DFzlGg/s400/ScreenHunter_11+Apr.+04+13.24.gif

結論 : 目前尚無法證實限制 fssm32.exe 會不會對產品效能造成甚麼影響 , 但對於安裝電腦配備等級較差的用戶端 , 可以建議採用這樣的方式將使用者的不便降低…

關於 fssm32.exe 及其他模組間細部的分析測試則需要另外再進行研究 , 請各位前輩提供建議~

以上是我在 F-Secure 上為了有效管理記憶體所做的實驗....提供一點點小心得與大家分享..
如果您使用的掃毒軟體或應用程式也有類似的問題 , 可以測試看看是否有幫助 ...


註1 F-Secure 官網論壇討論內容所列 F-secure Process 列表

fsm32.exe - F-Secure Manager, displays the F- tray icon

fsma32.exe - F-Secure Management Agent (Service)

fsmb32.exe - Message Broker, processes communication between the different modules & products

fsnrb32.exe - Handles the communication between the hosts and the PMS

fameh32.exe - Alert and Messaging Handler, handles alert and log forwarding

fch32.exe - Configuration Handler, reads the base policy files and writes the incremental policy files

fsih32.exe - Installation Handler. Launches ilaunchr.exe during installations

fsav32.exe - Anti-Virus Handler

fsaw.exe - F-Secure Ad-Watch (Browser Control)

fsdfwd.exe - Anti-Virus Firewall Deamon. Redirects e-mails to the Scanner Manager (Service)

fsqh.exe - Handles object quarantine

fsgk32.exe - Gatekeeper Handler. Receives real-time scan requests from the Gatekeeper

fsgk32st.exe - Gatekeeper Handler Starter (Service)

fsrw.exe - F-Secure Reg-Watch (System Control)

fssm32.exe - Scanner Manager. Manages scanning engines

贊助商連結


unknow8877
2009-04-11, 07:47 AM
上一篇幫 FSSM32.EXE 減肥提到 , 可以使用 minimem 這個工具 , 但實際測試後 ...

有同事反應使用 minimem 後進行全機掃描 , 無法掃描的檔案變多 ...
因此特別做了兩個簡單的對照掃描測試 :

我在同一台電腦上分別做兩次手動掃描 ,
一次是有使用 minimem 來限制 FSSM32 使用的記憶體 ...
另一次為正常的掃描 , 然後來比較兩次掃描完後的報告內容...

重點為無法掃描的檔案數量 , 及掃描所耗費的時間 ....

第一個測試為 "快速惡意軟體掃描 " , 第二個測試為指定掃描 "C:\WINDOWS" 目錄 ...

以下為測試的結果摘要:

---------------------------------------------
測試 I:

電腦名稱: BISCUIT
掃描類型: 快速惡意軟體掃描

目標: 系統
已掃描:
檔案: 4869
未掃描: 0
未使用 minimem , 掃描時間 : 21:34:35 - 21:37:48 (耗費時間 03:13)
使用 minimem , 掃描時間 : 21:25:31 - 21:30:36 (耗費時間 05:05)

---------------------------------------------

測試 II:
電腦名稱: BISCUIT
掃描類型: 掃描目標
目標: C:\WINDOWS
已掃描:
檔案: 38261
未掃描: 14
未使用 minimem , 掃描時間 : 21:45:19 - 22:08:26 (耗費時間 23:07)
使用 minimem , 掃描時間 : 22:13:18 - 22:36:59 (耗費時間 23:41)
---------------------------------------------

本次測試總結 :

使用 minimem 工具限制 FSSM32.EXE 使用記憶體大小 , 並未直接影響未掃描的檔案數量

但可能增加掃描所需要的時間 ( minimem一直在跟 FSSM32 調整使用的記憶體 )

由於我這台測試的電腦掛了三顆 HDD , 若做完整的全機掃描會很花時間 , 所以才以特定的掃描目標來做測試 ..... ( 就單純從數據上來看 , 只是會影響掃描效能而已 , 應該不影響掃描的品質 )

但是由於沒做全機掃描 , 所以還有一個無法確定是否會影響掃描品質的變數....
那就是專門偵查其清除 RootKit 的 BlckLight 引擎 !! ....... (待續)

unknow8877
2009-04-11, 07:55 AM
各情形下的全機掃描測試記錄 :

1. 使用 VM 安裝全新 Windows XP / SP3 / 除了 minimem 需要的 .net framework 3.5 外 , 沒裝其他軟體 ( 單純測試環境 )

2. 在 VM 中設定還原點 , 每次掃描完皆還原到 FSCS 剛安裝好後的重開機狀態 ( 以避免FS掃描時的自我學習功能影響掃描結果 )


項目 VM設定 記憶體 (限制記憶體) 掃描開始時間 結束時間 (耗費時間) 掃描檔案總數量 未掃描檔案數
1 512 MB no minimem 23:50:03 00:32:15 (42:12) 48637 16
2 512 MB use minimem 00:39:27 01:29:19 (49:52) 48643 12
3 2048 MB no minimem 01:53:12 02:35:47 (42:35) 48679 13
4 2048 MB use minimem 03:02:01 03:46:21 (44:19) 48692 13
5 256 MB no minimem 04:20:26 05:08:02 (47:36) 48641 12
6 256 MB use minimem 06:05:02 07:11:14 (66:16) 48657 13