阻止管理员获得对象的所有权

时间:2018-11-29 17:36:10

标签: windows permissions administrator dll-injection

  

作为前提,我希望您知道这与游戏无关   作弊,因为我只对了解Windows的方式感兴趣   作品。我什至没有亲自玩电子游戏。

Fortnite随附的

EasyAntiCheat 阻止修改游戏过程和更改其参数。

例如,尝试更改优先级(我不寻求更改优先级的方法,因为已经在herehere的Wayback Machine捕获中发布了解决方案)会导致拒绝访问错误。

即使用户是管理员并拥有 SeTakeOwnershipPrivilege 权限,使用Process Hacker或Process Explorer修改流程的ACL也会产生相同的错误。


因为:

  • 启用了PatchGuard,因此即使对于EAC驱动程序也无法进行旧式内核挂钩
  • 内核公开的API仅允许将发生的系统调用通知驱动程序,而不能更改常规内核的行为
  • EasyAntiCheat驱动程序文件系统微型过滤器不应影响进程ACL。实际上,即使使用 FLTMC.exe
  • 卸载了过滤器,结果也相同。
  • 至少在通过Process Monitor列出 Load Image 事件时,似乎没有在进程内进行代码注入,即使可以通过其他方式实现注入(我没有足够的知识)
  • 该过程不受保护受光保护

Windows 10 x64(1803)通过什么机制允许EAC执行上述操作?也许找到答案就足够了,将更多的注意力放在第四方法上。

Here,您可以找到指向 Load Image 事件列表的链接,这些事件从 ProcessHacker.exe 启动到在Sysinternals中结束显示流程监控器。

P.S .:对不起语法错误,英语不是我的主要语言。

1 个答案:

答案 0 :(得分:0)

所以我几乎随机地在Reddit上发了this个帖子,我认为这可以解释

关键是我不知道的ObRegisterCallbacks内核模式函数。

它允许驱动程序注册有关进程,线程和(从Windows 10开始)桌面对象的事件。

我最初知道PsSetCreateProcessNotifyRoutine,它不仅允许“被动”监视进程的创建/终止,而且为驱动程序提供了一种通过在回调中返回错误来“主动”取消创建的方法。 / p>

但这不是我要处理的事情:没有进程创建,只是我试图提高不是 Protected 的进程的优先级受光保护

ObRegisterCallbacks的用法如下: 保护驱动程序从注册的回调中将句柄请求的DesiredAccess剥离到所需的内容,使句柄创建操作继续进行,因为该进程从未真正要求能够终止/设置进程优先级,因此有效地阻止它。

this GitHub repo中提供了一个很好的示例。此链接是指向访问CreateHandleInformation(或DuplicateHandleInformation)的DesiredAccess成员的代码点的永久链接。