欢迎光临本站!

剖析InfinityHook原理 掀起一场更激烈的攻与防恶战

来源:原创    更新时间:2019-08-05 21:53:10    编辑:星谷下载    浏览:710
Hook是一种可以改变程序执行流程的技术,巧妙利用Hook技术可以实现很多实用的操作,如:监控、过滤、拦截、修改等。

但在现代操作系统中,出现了诸多限制,导致无法轻松的进行底层Hook。其中典型例子就是Win10的PatchGuard

现在,我将为大家讲解一个神奇的技术:InfinityHook



什么是 InfinityHook


InfinityHook,是一个可以Hook各种系统调用、上下文切换、页面错误、DPC等内核事件的技术。

它目前可以与PatchGuard同时运行,且比常规Hook技术具有更好隐蔽性。
InfinityHook并不是其名意所谓的“无限Hook”,实际意义是可以安全的对内核底层进行Hook。

因为安全界中攻与防的对抗,产生了一种,谁先Hook,谁Hook的最底层,谁最有优势的概念。

而攻与防之间互相抢夺Hook优势的现象,像极了一个无尽深渊,没有终点。

微软为了保护底层系统的安全,防止被第三方程序滥用,在一系列新版本操作系统中推出和升级了PatchGuard

InfinityHook的出现打破了微软的这一保护,拥有更安全更底层的Hook优势。

随着时间的推移这项技术会广为人知,这意味着一场更激烈的攻防无限Hook战争即将开战。故名“InfinityHook”。

想要更深入剖析InfinityHook的原理,就得先了解WindowsEvent Tracing机制。  


什么是 Event Tracing for Windows


Windows事件跟踪(ETW)是一种高效的内核级跟踪工具,可让您将内核或应用程序定义的事件记录到日志文件中。您可以实时或从日志文件中使用事件,并使用它们来调试应用程序或确定应用程序中发生性能问题的位置。

ETW允许您动态启用或禁用事件跟踪,允许您在生产环境中执行详细跟踪,而无需重新启动计算机或应用程序。

事件跟踪API分为三个不同的组件:
  • 控制器(Controllers):用于启动和停止事件跟踪会话并启用提供程序。

  • 提供者(Providers):用于提供事件。

  • 消费者(Consumers):用于消费事件。


 控制器(Controllers)


控制器是定义日志文件的大小和位置、启动和停止事件跟踪会话、启用提供程序以便将事件记录到会话、管理缓冲池的大小以及获取会话的执行统计信息的应用程序。

 

提供者(Providers)


提供程序是包含事件跟踪工具的应用程序。提供程序注册后,控制器可以在提供程序中启用或禁用事件跟踪。提供者定义其启用或禁用的实现。

通常,启用的提供程序会生成事件,而禁用的提供程序则不会。这使您可以向应用程序添加事件跟踪,而无需始终生成事件。

虽然ETW模型将控制器和提供程序分离为单独的应用程序,但应用程序可以包含这两个组件。

 

消费者(Consumers)


消费者是选择一个或多个事件跟踪会话作为事件源的应用程序。消费者可以同时从多个事件跟踪会话中请求事件;系统按时间顺序提供事件。

消费者可以接收存储在日志文件中的事件,也可以接收实时传递事件的会话。处理事件时,消费者可以指定开始和结束时间,并且仅传递在指定时间范围内发生的事件。

Tag标签标签: 无标签

评论区

表情

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

相关内容