火绒剑杀死进程分析
2023-5-24 18:0:19 Author: 看雪学苑(查看原文) 阅读量:21 收藏

为什么要研究火绒剑是怎么杀死进程的?

公司也是做DLP数据防泄漏的,客户机器上装了免费的火绒安全软件就能杀死我们的进程了,这怎么能行那?客户还不允许火绒剑不好使,那没有办法就大概看一下火绒剑是怎么杀死进程的。

判断它是通过应用层还是驱动层杀死的进程

使用上我们的PCHUNTER工具,卸载掉火绒的驱动,试一下。




结果火绒剑弹出了错误的弹窗。


在我们重启虚拟机的期间,打开IDA看看火绒的驱动

看一下导入表导入的函数



看到了ZwTerminateProcess函数,这还用想,肯定是调用了这个函数。

直接按X查看交叉引用。




一共有3个驱动函数调用这个API了,这不简单了吗,直接上WINDBG双机调试,看看它们能不能断下来!



果然没有那么简单,这3个函数都没有调用,难道它写一个这个结束进程一点用没有?

柳暗花明又一村

它肯定要通过我们的PID获取我们的进程的嘛,我们看一下导入表。




果然发现了关键的函数,PsLookupProcessByProcessId,一套操作再来一遍,然后看看我们结束进程的时候,会走哪个函数。




当我们点击确定的时候,可以发现:




进入了第7个函数的断点,我们来看看它是怎么实现的?




这个42790所在的函数就会返回一个进程句柄给R3程序?

这个是不是也可以用在某游戏上CE没有图标的问题,拥有了进程句柄,CE就可以正常的读写游戏了吧。

不想那些,我直接修改一下这个函数,直接让它返回空。



按G,继续运行,我的天哇,怎么就调用了那个会调用ZwTerminateProcess的函数了那,也直接给他返回,不让这个函数进行任何的操作,我们来看一看进程会不会被杀死?




这个进程竟然杀不死了,
看一下R3进程的导入表。


因此我们大概猜测出来了这个结束进程的流程了。

结论

火绒剑的结束进程,先是通过驱动打开对应进程的进程句柄,然后R3调用结束进程的API,如果驱动没有返回进程的进程句柄,则会通过驱动杀死进程。

分析到这里就够了,然后就是想着如何劫持它的IO通信,在他调用对应的消息号的时候,是我们的进程就返回失败的问题了,让一切归于平静!

看雪ID:lwl

https://bbs.kanxue.com/user-home-155459.htm

*本文为看雪论坛优秀文章,由看雪论坛 lwl 原创,转载请注明来自看雪社区

# 往期推荐

1、在 Windows下搭建LLVM 使用环境

2、深入学习smali语法

3、安卓加固脱壳分享

4、Flutter 逆向初探

5、一个简单实践理解栈空间转移

6、记一次某盾手游加固的脱壳与修复

球分享

球点赞

球在看


文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458505034&idx=2&sn=e45c2a93f8fff7b75a38e5458e654e03&chksm=b18effc086f976d6fcad3216efc6b534bfdc2d9305e50e8199978c9566f04ebb8375bbd8c646#rd
如有侵权请联系:admin#unsafe.sh