查看: 3924|回复: 19
收起左侧

[分享] 【转帖】对百度杀毒软件hook的一点分析

[复制链接]
zhq445078388
发表于 2013-4-12 10:26:07 | 显示全部楼层 |阅读模式
本帖最后由 笙儿 于 2013-4-12 13:08 编辑

来源:看雪论坛 原帖地址

作者:囧囧

对百度杀毒软件hook的一点分析



当分析到现在的时候,不禁泪流满面,因为这个hook框架几乎与腾讯电脑管家雷同。。

也就是说这个帖子估计会和Fypher分析腾讯电脑管家时雷同,已经不忍去翻Fypher的帖子了。

程序开始的时候,建立如下一个表:
Bhbase:fab6c000
v7 0x2154 ---- Bhbase+A770
+0  MmUserProbeAddress       4B --170E0--> *MmUserProbeAddress 4B
+4  ServiceTableBase         4B
+8  NumberOfServices         4B
+c  Win32kApiTable           4B
+10 NumberOfWin32kApi        4B
+14 p_characteristic_KiFastCallEntry 4B KiFastCallEntry+0xe7
+18 p_characteristic_KiFastCallEntry+8 4B
+1C characteristic_KiFastCallEntry 8B
+24 KeServiceDescriptorTable 4B
+28 Ntoskrnl_ImageBase       4B
+2C Ntoskrnl_ImageSize       4B
+30 win32k_ImageBase         4B
+34 win32k_ImageSize         4B
+38 PID_csrss.exe            4B
+3C KiFastCallEntry_characteristic_Exist 1B
+3D is_PID_winlogon_csrss_0  1B
+40
+44 OSversionI               4B

首先SSDT hook ZwSetEvent,然后插入一个假Event,在Its_ZwSetEvent函数中判断该假Event,从栈里找到它在Caller(KiFastCallEntry)中的Return地址,然后从该地址向前搜索(8BFC3B35 XXXXXXXX 0F83),这里便是Hook点。随后移除ZwSetEvent的hook。

HOOK KiFastCallEntry的时候,多核的话向每个CPU投递DPC,参数是一个SpinLock,在DeferredRoutine里增加一个计数,然后就参与到争夺该SpinLock的行动中。

该SpinLock在HOOK KiFastCallEntry的线程里已经被KfAcquireSpinLock了,也就是说除了执行这个线程的核心,其他核心是得不到SpinLock的。执行HOOK的线程等上面那个计数达到(总核心数-1)的时候,也就是说其他核心都被挂到树上时,它就HOOK,然后扔掉SpinLock。其他核心得到该SpinLock,一看是个烂苹果也就扔掉了,DeferredRoutine就执行结束了。

值得一提的是无论上面计数的增加和替换KiFastCallEntry里Opcode的过程,都是使用原子操作的函数完成的,_InterlockedExchangeAdd与_InterlockedCompareExchange64。

后记:
随手试了下,恢复KiFastCallEntry,再恢复SSDT,就过了百度的防护。
然后用这个强删代码(囧,不完整):http://bbs.pediy.com/showthread.php?t=166185
就能随意删除百度山毒软件目录下的文件。

评分

参与人数 1人气 +1 收起 理由
aiping + 1 技术人才

查看全部评分

大捏捏
发表于 2013-4-12 10:34:57 | 显示全部楼层
小心楼主会被喷哟,低调。
云之彼端
头像被屏蔽
发表于 2013-4-12 10:59:19 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
TTTAOa
发表于 2013-4-12 11:06:48 | 显示全部楼层
我就是看帖。不敢说话
单从百度杀毒界面来说,很清爽
Flameocean
发表于 2013-4-12 11:07:04 | 显示全部楼层
此贴必火。。。。 即使人家百度借鉴了同盟的,也没有拿出来到处炫耀啊,是不
zilei
发表于 2013-4-12 11:35:44 | 显示全部楼层
虽然容易,但等到手了再说
猪头无双
头像被屏蔽
发表于 2013-4-12 11:58:24 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
dl123100
发表于 2013-4-12 12:16:20 | 显示全部楼层
本帖最后由 dl123100 于 2013-4-12 12:18 编辑

分析得太没水准了。
hook框架雷同是因为本身就是腾讯Q管家相关部分作者跳槽过去后写的。
删除部分居然连360专属的XCB都没发现还叫分析。

评分

参与人数 2人气 +2 收起 理由
aiping + 1 都是技术人才
七宝 + 1 好久未见dl大牛啊~

查看全部评分

Flameocean
发表于 2013-4-12 12:27:11 | 显示全部楼层
本帖最后由 Flameocean 于 2013-4-12 12:28 编辑
dl123100 发表于 2013-4-12 12:16
分析得太没水准了。
hook框架雷同是因为本身就是腾讯Q管家相关部分作者跳槽过去后写的。
删除部分居然连3 ...


支持大牛!确实程序员来回走动大,前两周金山正奇走了,上次我说的那个管家的内核工程师前几天也辞职了
E剑忠晴
发表于 2013-4-12 12:56:43 | 显示全部楼层
百度好~
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-16 16:51 , Processed in 0.129709 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表