利用ObRegisterCallbacks保护进程并附上突破ObRegisterCallbacks的方法[未更新]

本文探讨了x64环境下利用ObRegisterCallbacks进行进程保护的原理,并介绍了如何通过修改线程对象中SupportsObjectCallbacks字段来绕过这种保护。文章提到,单纯依赖SSDT Hook在x64系统中已无法有效保护进程,ObRegisterCallbacks成为一种选择。作者分享了论坛上的突破方法,包括设置对象类型回调中的特定字段,以限制对目标进程的访问权限。
摘要由CSDN通过智能技术生成

写上未更新的原因是我觉得 当初写这篇文章的时候理解的还是不够彻底,现在又了新的认识,待老夫有时间的时候在来重写一次

这里附上新的突破方法 我已经我写的时候已经写上了

今天发到博客的时候才发现没写,来补上

可以看我发到梦老大论坛的帖子,直接看第三种方法就行,前面两种我都服了,这样获取对象类型,太年轻啊

http://www.mengwuji.net/forum.php?mod=viewthread&tid=2323&page=1

简单说下就是讲线程对象中的SupportsObjectCallbacks域置0

随便说一说 一字节anti创建进程线程等回调 这个不是我知道的,这是论坛一哥们发的

http://www.mengwuji.net/forum.php?mod=viewthread&tid=2498&page=1

需要注意的是梦老大的留言

然后我搜了搜论坛

看到老大说了

PspNotifyEnableMask这个可以控制的,其中第0位代表是否开启模块回调,第一位代表是否开启进程回调(调用PsSetCreateProcessNotifyRoutine设置的情况),第二位代表是否开启进程回调(调用PsSetCreateProcessNotifyRoutineEx设置的情况),第三位代表是否开启线程回调。

如果你想让进程回调失效,就把PspNotifyEnableMask的第一位和第二位设置为零就行了,只是这样做所有的进程回调就会失效,不过也无所谓啦

那它到底控制多少呢?IDA一看就知道了

方向 种类 地址                                  文本                                
---- ---- ----                                  ----                                
上   r    PspExitProcess+55                     mov     ebp, cs:PspNotifyEnableMask 
上   r    PspExitProcess+5B                     mov     eax, cs:PspNotifyEnableMask 
上   r    PspExitThread+BE                      mov     eax, cs:PspNotifyEnableMask 
上   r    PspInsertThread+3B0                   mov     r11d, cs:PspNotifyEnableMask
上   r    PspInsertThread+4A6                   mov     ecx, cs:PspNotifyEnableMask 
上   r    PspInsertThread+4B6                   mov     eax, cs:PspNotifyEnableMask 
上   r    DbgkCreateThread:loc_14036BD05        mov     ecx, cs:PspNotifyEnableMask 
上   r    MiMapViewOfImageSection:loc_1403990D6 mov     eax, cs:PspNotifyEnableMask 
上   r    PsCallImageNotifyRoutines+2C          mov     eax, cs:PspNotifyEnableMask 
上   r    MmLoadSystemImage+250                 mov     eax, cs:PspNotifyEnableMask 
上   r    PsSetLoadImageNotifyRoutine+55        mov     eax, cs:PspNotifyEnableMask 
上   w    PsSetLoadImageNotifyRoutine+5F        lock bts cs:PspNotifyEnableMask, 0  
上   r    PsSetCreateThreadNotifyRoutine+55     mov     eax, cs:PspNotifyEnableMask 
上   w    PsSetCreateThreadNotifyRoutine+5F     lock bts cs:PspNotifyEnableMask, 3  
     r    PspSetCreateProcessNotifyRoutine+1BB  mov     eax, cs:PspNotifyEnableMask 
下   w    PspSetCreateProcessNotifyRoutine+1C5  lock bts cs:PspNotifyEnableMask, 1  
下   r    PspSetCreateProcessNotifyRoutine+1D7  mov     eax, cs:PspNotifyEnableMask 
下   w    PspSetCreateProcessNotifyRoutine+1E1  lock bts cs:PspNotifyEnableMask, 2  
大概看一下是创建进线程回调,模块加载回调,很多都是重复,那么就是sub


众所周知如果不patch DSE KPP 是不能在x64下进程SSDT HOOK的,那以前x86保护进程都是SSDT HOOK NtOpenprocess 保护线程HOOK NtOpenThread 很有游戏保护也是这么做的到了x64,这样的作法是不可行的,那么如何保护进程呢,微软给我们提供了一个API ObRegisterCallbacks 注册一个Object回调

先看下原型:
  1. NTSTATUS 
  2.   ObRegisterCallbacks(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值