能力值:
( LV8,RANK:130 )
2 楼
先不谈hook不hook。楼主最基本的C语言知识都没到位啊。
UNICODE_STRING calc,xt;
...
if (&xt==NULL)
你觉得这个if什么时候会成立呢?
至于蓝屏,你这样写xt=*(ObjectAttributes->ObjectName);不蓝才怪。
能力值:
( LV2,RANK:10 )
3 楼
NTSTATUS __declspec(naked) (__stdcall MNtOpenProcess)(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PCLIENT_ID ClientId OPTIONAL
)
{
__asm
{
int 3
}
NTSTATUS ns;
UNICODE_STRING calc,xt;
RtlInitUnicodeString(&calc,L"calc.exe");
BOOLEAN ObjectNamePresent;
if (ObjectAttributes->ObjectName==NULL)
{
if (RtlCompareUnicodeString(ObjectAttributes->ObjectName,&calc,FALSE)==0)
{
ProcessHandle=NULL;
dprintf("go to ObjectName \n");
ns=STATUS_UNSUCCESSFUL;
__asm
{
retn 0x10
}
}
}
__asm
{
push 0x0c4
mov ebx,OldNtOpenProcess
add ebx,5
jmp ebx
}
}
一样蓝屏 ObjectAttributes->ObjectName 在这里一直过不去
ObjectAttributes->ObjectName 这里不管如何处理都在里出问题
能力值:
( LV4,RANK:50 )
4 楼
我就奇了怪了,你都判断ObjectAttributes->ObjectName为NULL了你还要去执行RtlCompareUnicodeString(ObjectAttributes->ObjectName,&calc,FALSE)这句代码,不是自己扇自己脸么
能力值:
( LV2,RANK:10 )
5 楼
写错 (ObjectAttributes->ObjectName!=NULL) 但是同样蓝屏,就一直在遍历
能力值:
( LV9,RANK:190 )
6 楼
这楼主,我也是醉了!R3 下的HOOK 我看都HOOK 不好,直接上R0的,蓝个够吧!劝你先基础扫盲一下。
能力值:
( LV2,RANK:10 )
7 楼
您会请指教不会请让道谢谢
能力值:
( LV4,RANK:50 )
8 楼
我就想问 你确认ObjectAttributes不是无效指针?你确认ObjectAttributes不是NULL?
NtOpenProcess传入的参数是CLIENT_ID。
能力值:
( LV2,RANK:10 )
9 楼
我通过 ClientId->UniqueProcess 对比一样是蓝屏啊,都是卡在ClientId->UniqueProcess这里
能力值:
( LV4,RANK:50 )
10 楼
你对比的是什么?是PID还是进程名?
能力值:
( LV2,RANK:10 )
11 楼
进程名啊
能力值:
( LV4,RANK:50 )
12 楼
PID是个HANDLE
整个NtOpenProcess函数调用过程根本不存在进程名信息
就你这基础,好好补补吧
能力值:
( LV2,RANK:10 )
13 楼
NTSTATUS __declspec(naked) (__stdcall MNtOpenProcess)(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PCLIENT_ID ClientId OPTIONAL
)
ObjectAttributes 这个结构就有进程名信息,不懂不要**,最讨厌了,用汇编就不蓝屏了
能力值:
( LV4,RANK:50 )
14 楼
那你慢慢调
能力值:
( LV3,RANK:30 )
15 楼
就你这态度,也是醉了,
能力值:
( LV4,RANK:50 )
16 楼
我就路过看看
能力值:
( LV5,RANK:69 )
17 楼
路过学习了
能力值:
( LV2,RANK:10 )
18 楼
结贴了,我找出原因了。