📄 timer.c
字号:
/*
* Copyright (c) 2004 Security Architects Corporation. All rights reserved.
*
* Module Name:
*
* timer.c
*
* Abstract:
*
* This module implements various timer hooking routines.
*
* Author:
*
* Eugene Tsyrklevich 25-Mar-2004
*
* Revision History:
*
* None.
*/
#include "timer.h"
#ifdef ALLOC_PRAGMA
#pragma alloc_text (INIT, InitTimerHooks)
#endif
fpZwCreateTimer OriginalNtCreateTimer = NULL;
fpZwOpenTimer OriginalNtOpenTimer = NULL;
/*
* HookedNtCreateTimer()
*
* Description:
* This function mediates the NtCreateTimer() system service and checks the
* provided timer name against the global and current process security policies.
*
* NOTE: ZwCreateTimer creates or opens a timer object. [NAR]
*
* Parameters:
* Those of NtCreateTimer().
*
* Returns:
* STATUS_ACCESS_DENIED if the call does not pass the security policy check.
* Otherwise, NTSTATUS returned by NtCreateTimer().
*/
NTSTATUS
NTAPI
HookedNtCreateTimer
(
OUT PHANDLE TimerHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN TIMER_TYPE TimerType
)
{
PCHAR FunctionName = "HookedNtCreateTimer";
HOOK_ROUTINE_START(TIMER);
ASSERT(OriginalNtCreateTimer);
rc = OriginalNtCreateTimer(TimerHandle, DesiredAccess, ObjectAttributes, TimerType);
HOOK_ROUTINE_FINISH(TIMER);
}
/*
* HookedNtOpenTimer()
*
* Description:
* This function mediates the NtOpenTimer() system service and checks the
* provided timer name against the global and current process security policies.
*
* NOTE: ZwOpenTimer opens a timer object. [NAR]
*
* Parameters:
* Those of NtOpenTimer().
*
* Returns:
* STATUS_ACCESS_DENIED if the call does not pass the security policy check.
* Otherwise, NTSTATUS returned by NtOpenTimer().
*/
NTSTATUS
NTAPI
HookedNtOpenTimer
(
OUT PHANDLE TimerHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes
)
{
PCHAR FunctionName = "HookedNtOpenTimer";
HOOK_ROUTINE_START(TIMER);
ASSERT(OriginalNtOpenTimer);
rc = OriginalNtOpenTimer(TimerHandle, DesiredAccess, ObjectAttributes);
HOOK_ROUTINE_FINISH(TIMER);
}
/*
* InitTimerHooks()
*
* Description:
* Initializes all the mediated timer operation pointers. The "OriginalFunction" pointers
* are initialized by InstallSyscallsHooks() that must be called prior to this function.
*
* NOTE: Called once during driver initialization (DriverEntry()).
*
* Parameters:
* None.
*
* Returns:
* TRUE to indicate success, FALSE if failed.
*/
BOOLEAN
InitTimerHooks()
{
if ( (OriginalNtCreateTimer = (fpZwCreateTimer) ZwCalls[ZW_CREATE_TIMER_INDEX].OriginalFunction) == NULL)
{
LOG(LOG_SS_TIMER, LOG_PRIORITY_DEBUG, ("InitTimerHooks: OriginalNtCreateTimer is NULL\n"));
return FALSE;
}
if ( (OriginalNtOpenTimer = (fpZwOpenTimer) ZwCalls[ZW_OPEN_TIMER_INDEX].OriginalFunction) == NULL)
{
LOG(LOG_SS_TIMER, LOG_PRIORITY_DEBUG, ("InitTimerHooks: OriginalNtOpenTimer is NULL\n"));
return FALSE;
}
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -