fix close VerifyFlags
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#include "ob_reg_callback.h"
|
#include "ob_reg_callback.h"
|
||||||
#include "protect_filter.h"
|
#include "protect_filter.h"
|
||||||
|
#include "kernel_function.h"
|
||||||
|
|
||||||
void* reg_ob_callback_handle;
|
void* reg_ob_callback_handle;
|
||||||
|
|
||||||
@@ -22,13 +23,15 @@ auto ob_call_back::register_ob_reg_callback() -> NTSTATUS
|
|||||||
auto ob_callback = [](_In_ PVOID RegistrationContext,
|
auto ob_callback = [](_In_ PVOID RegistrationContext,
|
||||||
_In_ POB_PRE_OPERATION_INFORMATION pOperationInformation) -> OB_PREOP_CALLBACK_STATUS
|
_In_ POB_PRE_OPERATION_INFORMATION pOperationInformation) -> OB_PREOP_CALLBACK_STATUS
|
||||||
{
|
{
|
||||||
|
UNREFERENCED_PARAMETER(pOperationInformation);
|
||||||
UNREFERENCED_PARAMETER(RegistrationContext);
|
UNREFERENCED_PARAMETER(RegistrationContext);
|
||||||
auto dwPid = PsGetProcessId(reinterpret_cast<PEPROCESS>(pOperationInformation->Object));
|
|
||||||
|
auto dwPid = kernel_api::psgetprocessid(reinterpret_cast<PEPROCESS>(pOperationInformation->Object));
|
||||||
|
|
||||||
auto operation_eprocess = PsGetCurrentProcess();
|
auto operation_eprocess = PsGetCurrentProcess();
|
||||||
|
|
||||||
PUNICODE_STRING image_file_name{ 0 };
|
PUNICODE_STRING image_file_name{ 0 };
|
||||||
auto status = SeLocateProcessImageName(operation_eprocess, &image_file_name);
|
auto status = kernel_api::selocate_process_imagename(operation_eprocess, &image_file_name);
|
||||||
if (NT_SUCCESS(status))
|
if (NT_SUCCESS(status))
|
||||||
{
|
{
|
||||||
if(is_allow_process(image_file_name))
|
if(is_allow_process(image_file_name))
|
||||||
@@ -36,8 +39,8 @@ auto ob_call_back::register_ob_reg_callback() -> NTSTATUS
|
|||||||
|
|
||||||
if (protect_filter::is_protect_pid(HandleToLong(dwPid), nullptr))
|
if (protect_filter::is_protect_pid(HandleToLong(dwPid), nullptr))
|
||||||
{
|
{
|
||||||
pOperationInformation->Parameters->DuplicateHandleInformation.DesiredAccess = 0;
|
//pOperationInformation->Parameters->DuplicateHandleInformation.DesiredAccess = 0;
|
||||||
pOperationInformation->Parameters->DuplicateHandleInformation.OriginalDesiredAccess = 0;
|
//pOperationInformation->Parameters->DuplicateHandleInformation.OriginalDesiredAccess = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end:
|
end:
|
||||||
@@ -64,8 +67,11 @@ auto ob_call_back::register_ob_reg_callback() -> NTSTATUS
|
|||||||
//方式2 : 注册两个ObRegisterCallbacks 层分别在xx的上方和下方 等xx抹了之后 抹回去
|
//方式2 : 注册两个ObRegisterCallbacks 层分别在xx的上方和下方 等xx抹了之后 抹回去
|
||||||
//方式3 :Pte hook Obp
|
//方式3 :Pte hook Obp
|
||||||
//方式4 :遍历CallbacksList替换或修改Pre Post函数
|
//方式4 :遍历CallbacksList替换或修改Pre Post函数
|
||||||
|
BYTE* orgin_byte = nullptr;
|
||||||
|
kernel_function::Mack_MmVerifyCallBackFlags(&orgin_byte);
|
||||||
status = ObRegisterCallbacks(&obReg, ®_ob_callback_handle);
|
status = ObRegisterCallbacks(&obReg, ®_ob_callback_handle);
|
||||||
|
kernel_function::Orgin_MmVerifyCallBackFlags((BYTE*)&orgin_byte);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user