公司也是做DLP数据防泄漏的,客户机器上装了免费的火绒安全软件就能杀死我们的进程了,这怎么能行那?客户还不允许火绒剑不好使,那没有办法就大概看一下火绒剑是怎么杀死进程的。
使用上我们的PCHUNTER工具,卸载掉火绒的驱动,试一下。 结果火绒剑弹出了错误的弹窗。
看到了ZwTerminateProcess函数,这还用想嘛,肯定是调用了这个函数的哇。直接按X查看交叉引用, 一共有3个驱动函数调用这个API了,这不简单了吗,直接上WINDBG双机调试,看看它们能不能断下来! 哇!我的天哇,果然没有那么简单这3个函数都没有调用,难道它写一个这个结束进程一点用没有?
它肯定要通过我们的PID获取我们的进程的嘛,我们看一下导入表, 果然发现了关键的函数,PsLookupProcessByProcessId,一套操作再来一遍,然后看看我们结束进程的时候,会走哪个函数。 当我们点击确定的时候,可以发现 进入了第7个函数的断点,我们来看看它是怎么实现的? 这个42790所在的函数就会返回一个进程句柄给R3程序?这个是不是也可以用在某游戏上CE没有图标的问题,拥有了进程句柄,CE就可以正常的读写游戏了吧。不想那些,我直接修改一下这个函数,直接让它返回空。 按G,继续运行,我的天哇,怎么就调用了那个会调用ZwTerminateProcess的函数了那,也直接给他返回,不让这个函数进行任何的操作,我们来看一看进程会不会被杀死? 这个进程竟然杀不死了,看一下R3进程的导入表 因此我们大概猜测出来了这个结束进程的流程了。
火绒剑的结束进程,先是通过驱动打开对应进程的进程句柄,然后R3调用结束进程的API,如果驱动没有返回进程的进程句柄,则会通过驱动杀死进程。分析到这里就够了,然后就是想着如何劫持它的IO通信,在他调用对应的消息号的时候,是我们的进程就返回失败的问题了,让一切归于平静!
IDA插件开发入门