|
[求助]关于汇编指令cli
线程切换 不是发生中断 才切换的么 |
|
|
|
[求助]读取内核函数代码函数是什么
指针 读取就行了 |
|
|
|
[求助]SSDT_HOOK函数NtGetContextThread
void ReGetContextThread(); ULONG NtGetContextThreadAddr; typedef NTSTATUS (WINAPI * _NtGetContextThreadAddr)(HANDLE hThread,PCONTEXT pContext); _NtGetContextThreadAddr MyNtGetContextThread; __declspec(naked) void CloseProtect() { _asm { cli push eax mov eax,cr0 and eax,not 10000h mov cr0,eax pop eax retn } } __declspec(naked) void ReProtect() { _asm { push eax mov eax,cr0 or eax,10000h mov cr0,eax pop eax sti retn } } __declspec (naked) NTSTATUS uNtGetConThread(HANDLE hThread,PCONTEXT pContext) { __asm jmp NtGetContextThreadAddr } NTSTATUS WINAPI MNtGetContextThread(HANDLE hThread,PCONTEXT pContext) { if(strcmp((char *)((ULONG)pEp+0x174),"dnf.exe")==0) { pEp=PsGetCurrentProcess(); KdPrint(("%s 访问NtGetContextThread \n",(ULONG)pEp+0x174)); return STATUS_UNSUCCESSFUL; } return uNtGetConThread(hThread,pContext); } void ReGetContextThread() { //获取SSDT表中 编号 85 NtGetContextThreadAddr=*((ULONG *)((ULONG)(KeServiceDescriptorTable->ServiceTableBase)+85*4)); //++++++++++执行SSDT HOOK ++++++++++++ //获取函数的SSDT地址 SSDT_ADDR=(ULONG)(KeServiceDescriptorTable->ServiceTableBase)+85*4; MyNtGetContextThread=MNtGetContextThread; //去保护 CloseProtect(); *((ULONG *)SSDT_ADDR)=(ULONG)MyNtGetContextThread; //恢复保护 ReProtect(); } |
|
[求助]关于一个内核函数的调用 出错了
是不是因为 PsConvertToGuiThread没有导出 声明后也无法调用 |
|
[求助]EnumWindows内部调用
顶层窗口句柄的链表 如何获取的 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值