VOID hook_NtOpenProcess()
{
UNICODE_STRING unName
=
{
0
};
RtlInitUnicodeString(&unName, L
"NtOpenProcess"
);
PUCHAR funcAddr
=
MmGetSystemRoutineAddress(&unName);
hook_by_addr(funcAddr, NtOpenProcess_callback, &num);
UCHAR buf[]
=
{
/
/
0x48
,
0x81
,
0xFA
,
0x00
,
0x10
,
0x00
,
0x00
,
0x48
,
0x83
,
0xF9
,
0x01
,
/
/
00007FF806EA094F
| |
cmp
rcx,
1
|
0x75
,
0x0E
,
/
/
00007FF806EA0953
| | jne ntdll.
7FF806EA0963
|
0xFF
,
0x25
,
0x00
,
0x00
,
0x00
,
0x00
,
/
/
00007FF806EA0955
| | jmp qword ptr ds : [
7FF806EA095B
] |
0x00
,
0x00
,
/
/
00007FF806EA095B
| | add byte ptr ds : [rax] ,al |
0x00
,
0x00
,
/
/
00007FF806EA095D
| | add byte ptr ds : [rax] ,al |
0x00
,
0x00
,
/
/
00007FF806EA095F
| | add byte ptr ds : [rax] ,al |
0x00
,
0x00
,
/
/
00007FF806EA0961
| | add byte ptr ds : [rax] ,al |
0x90
,
/
/
00007FF806EA0963
| | nop
};
/
/
DbgBreakPoint();
set_fast_prehandler(num, buf, sizeof buf,
12
);
}