您的位置:首页 > 其它

*管家病毒查杀模块逆向分析

2016-02-26 23:32 211 查看
本文研究的是*管家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文件中。

同时弹出安全提示窗口,要求用户确认是否删除。



并在通知栏弹出通知信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: