回调监控文件
使用 ObRegisterCallbacks 实现保护进程,其实稍微 PATCH 下内核,这个函数还能实现文件操作监视。但可惜只能在 WIN7X64 上用。因为在 WIN7X64 上 PATCH 对象结构的成员(ObjectType->TypeInfo.SupportsObjectCallbacks)是合法的,在 WIN8X64 以及之后系统上会触发 PATCHGUARD。但是经过实际测试,我手里的Win7 64 是可以在不修改myobtype->TypeInfo.SupportsObjectCallbacks = 1;的前提下直接注册回调,但是win8 64不行,win8 64 修改了myobtype->TypeInfo.SupportsObjectCallbacks = 1;之后发现没有蓝屏并且目前可以成功进行回调处理(只测试了手里的一台win8 64)。文件回调容易出问题,频率非常高。使用的时候建议使用成熟的文件过滤框架。
使用的时候和进程线程的回调句柄处理一样,需要修改标记使得无签名可以正常注册回调,然后在修改文件的myobtype->TypeInfo.SupportsObjectCallbacks = 1;然后在进行回调注册就行了。
注册:
// init callbacks
OB_CALLBACK_REGISTRATION obReg;
OB_OPERATION_REGISTRATION opReg;
memset(&obReg, 0, sizeof(obReg));
obReg.Version = ObGetFi

本文介绍了如何利用Win64驱动的ObRegisterCallbacks函数实现文件操作监控,特别是在Win7 x64系统上的应用。在Win7 x64上可以直接注册回调,而在Win8 x64及更高版本系统中,修改对象结构会触发PATCHGUARD,但作者实测发现仍可能成功执行回调。由于文件回调可能导致问题,建议采用成熟的文件过滤框架。在使用时需要进行特定标记的修改以允许无签名注册,并调整对象结构。
最低0.47元/天 解锁文章
245

被折叠的 条评论
为什么被折叠?



