管家病毒查杀模块逆向分析
本文研究的是*管家2.8—3.6版本的殺毒模塊功能實現。眾所周知,殺毒軟件查殺病毒分為主動查殺和被動查殺兩種方式。*管家的主動查殺包括快速查收和全盤查殺,而快速查殺和全盤查殺都使用了本地查殺技術和云查殺技術。
快速查殺
? ? ? 快速查殺首先獲取系統安裝的所有應用。創建"/data/data/com.anguanjia.safe/classes.dex"文件,將待掃描的apk解壓,獲取包中的classes.dex文件內容寫入到"/data/data/com.anguanjia.safe/classes.dex"文件中。
?
然后計算"/data/data/com.anguanjia.safe/classes.dex"文件的md5值,完成后刪除該文件。
?
將得到的md5再次取md5值,然后與本地數據庫進行匹配,具體檢測過程如下圖所示:
?
?上圖中的getMyParam11函數實質就是對service字符串拼接“0x400-service字符串長度”長度的0后進行base64編碼:
下圖為掃描應用的service時監控到的log輸出:
?
下圖為檢測到病毒時(l>0)更新appdata數據庫的newapp表代碼:
?
云查殺
在云查殺時,獲取系統安裝應用的包名、應用名稱、證書簽發者、證書序列號、classes.dex文件的md5值、是否系統應用等信息上傳到http://av.aqgj.cn/p/a1.php。
?
?
?以下為云查殺時抓包獲取的發送給服務器端的數據:
?
服務器端以xml格式返回檢測到的惡意應用信息,如下圖所示:
然后將檢測到的惡意應用包名、類型以及危險級別存入trojankill數據庫的trojan_kill_result表中:
?
將查殺時間保存到"/data/data/shared_prefs/com.anguanjia.safe_preferences.xml"文件的"last_kill_date"字段中。然后將掃描結果、掃描類型和掃描到的惡意應用包名保存入ScanLogDb數據庫的"ScanLogDb"表中:
?
全盤查殺
全盤掃描分兩個部分進行:
(1)有sd卡掛載,則掃描sd卡所有文件,檢測后綴為“apk”或者“APK”的所有文件,其檢測步驟與快速查殺一樣。
?
判斷文件后綴:
?
(2)如果沒有sd卡掛載,則掃描系統安裝的所有應用。檢測步驟與快速查殺一樣。
被動查殺
被動查殺是在監控到應用被安裝時進行病毒檢測。首先,殺軟會判斷當前網絡連接類型:
(1)如果沒有連接網絡或者連接的是非wifi網絡,則按照快速查殺流程,查詢本地數據庫進行惡意應用的檢測。
(2)如果是wifi網絡,則將正在被安裝應用的包名和md5值發送給服務器http://apk.scapi.aqgj.cn/xcloud/cloud.php,相關代碼如下:
?
實際抓包獲取到的數據如下圖所示:
?
服務器返回應用的惡意行為信息、危險級別、md5值、包名等信息。下圖為檢測到惡意應用時服務器返回的信息:
?
下圖為正常應用服務器返回的信息:
?
如果檢測到惡意應用,則將惡意應用的包名、人氣、評分、安全級別、惡意行為、評論信息等數據更新到appdata數據庫的newapp表中。同時將病毒包名寫入userhabit.xml文件中。
同時彈出安全提示窗口,要求用戶確認是否刪除。
?
并在通知欄彈出通知信息。
原文地址:?http://www.cnblogs.com/goodhacker/p/5222096.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的管家病毒查杀模块逆向分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android应用安全之Content
- 下一篇: “蜥蜴之尾”——长老木马四代分析报告