2009年4月8日 星期三

FSSM32.EXE VS MINIMEM 掃描比較


上一篇 幫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 引擎 !! ....... (待續)


幫 FSSM32.EXE 減肥

最近在幾次不同環境的使用者端裝機測試時 , 皆發現相同的問題…

就是在進行全機掃描時 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



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



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

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




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


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

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




註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