能力值:
( LV3,RANK:30 )
|
-
-
2 楼
代码写的不好,只是测试用的...
|
能力值:
( LV7,RANK:110 )
|
-
-
3 楼
好东西啊,X64的 object钩子
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
你对PG理解,太少了。不是简单的改函数,改参数就ok的。你这个是可以运行了,但是过半个小时就会蓝屏。
|
能力值:
( LV8,RANK:120 )
|
-
-
5 楼
是啊,PG 还是会检测到的,老师,pass pg 不现实啊,客户知道的话不会同意的 ,有啥好办法没
还有,win64 下 有没有好的隐藏dll 的办法呢,求老师指教
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
楼主辛苦了,那么晚还在发技术帖。
|
能力值:
(RANK:290 )
|
-
-
7 楼
10个参数才对
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
你这个。要是打开权限之类的话,为嘛要用obj hook,直接用obj回调哇。
ObRegisterCallbacks
http://bbs.pediy.com/showthread.php?t=168023
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
我测试没蓝
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
貌似对openProcess的处理不太好..
|
能力值:
( LV3,RANK:20 )
|
-
-
11 楼
如果这条路能走通,x64早就大批hook出现了。
|
能力值:
( LV12,RANK:210 )
|
-
-
12 楼
win7 x64 objecthook 不会蓝屏。从win8开始会,所以还是ObRegisterCallbacks吧
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
学习了。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
不是有现成的ObRegisterCallbacks吗,你还这么折腾干什么! NTSTATUS ObProtectProcess(BOOLEAN Enable) { PAGED_CODE(); if (Enable == TRUE) { NTSTATUS obst1 = 0, obst2 = 0; OB_CALLBACK_REGISTRATION obReg, obReg2; OB_OPERATION_REGISTRATION opReg, opReg2;
//reg ob callback 1 memset(&obReg, 0, sizeof(obReg)); obReg.Version = ObGetFilterVersion(); obReg.OperationRegistrationCount = 1; obReg.RegistrationContext = NULL; RtlInitUnicodeString(&obReg.Altitude, L"321124"); obReg.OperationRegistration = &opReg; memset(&opReg, 0, sizeof(opReg)); opReg.ObjectType = PsProcessType; opReg.Operations = OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE; opReg.PreOperation = (POB_PRE_OPERATION_CALLBACK)&preCall; obst1 = ObRegisterCallbacks(&obReg, &obHandle);
//reg ob callback 2 memset(&obReg2, 0, sizeof(obReg2)); obReg2.Version = ObGetFilterVersion(); obReg2.OperationRegistrationCount = 1; obReg2.RegistrationContext = NULL; RtlInitUnicodeString(&obReg2.Altitude, L"321125"); obReg2.OperationRegistration = &opReg2; memset(&opReg2, 0, sizeof(opReg2)); opReg2.ObjectType = PsThreadType; opReg2.Operations = OB_OPERATION_HANDLE_CREATE | OB_OPERATION_HANDLE_DUPLICATE; opReg2.PreOperation = (POB_PRE_OPERATION_CALLBACK)&preCall2; obst1 = ObRegisterCallbacks(&obReg2, &obHandle2); return NT_SUCCESS(obst1) & NT_SUCCESS(obst2); } else { if (obHandle != NULL) ObUnRegisterCallbacks(obHandle); if (obHandle2 != NULL) ObUnRegisterCallbacks(obHandle2); return TRUE; } }
|
|
|