首页
社区
课程
招聘
[旧帖] [原创]钩住SSDT禁止关机 0.00雪花
发表于: 2011-2-19 20:53 1230

[旧帖] [原创]钩住SSDT禁止关机 0.00雪花

2011-2-19 20:53
1230
#include "ntddk.h"

typedef NTSTATUS (__stdcall *pfnNtShutdownSystem)(IN ULONG aa);
pfnNtShutdownSystem old_NtShutdownSystem;

NTSYSAPI
NTSTATUS
NTAPI NtShutdownSystem(IN ULONG aa);

typedef struct ServiceDescriptorEntry {
        unsigned int *ServiceTableBase;
        unsigned int *ServiceCounterTableBase;
        unsigned int NumberOfServices;
        unsigned char *ParamTableBase;
} ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;

__declspec(dllimport)  ServiceDescriptorTableEntry_t KeServiceDescriptorTable;

void RedirectServiceAddr(ULONG ulServiceID, ULONG ulNewServiceProc)
{
     ULONG ulAddress=(ULONG)KeServiceDescriptorTable.ServiceTableBase + ulServiceID * 4;
     ULONG uAttr;
     _asm
     {
         push eax;
         mov   eax, cr0;
         mov   uAttr, eax;
         and   eax, 0FFFEFFFFh;
         mov   cr0, eax;
         pop   eax;
     }
     *((ULONG*)ulAddress) = ulNewServiceProc;
     _asm
     {
         push eax;
         mov   eax, uAttr;          mov   cr0, eax;
         pop   eax;
     }
}

NTSTATUS
new_NtShutdownSystem(IN ULONG aa)
{
     //NTSTATUS status=old_NtShutdownSystem(aa);
        return STATUS_SUCCESS;
}

VOID OnUnload( IN PDRIVER_OBJECT DriverObject)
{
        RedirectServiceAddr(0xf9,(ULONG)NtShutdownSystem);
}

NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )
{
        theDriverObject->DriverUnload  = OnUnload;

        RedirectServiceAddr(0xf9,(ULONG)new_NtShutdownSystem);

        return STATUS_SUCCESS;
}

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错的哦
可惜看不是很明白啊
2011-2-19 21:27
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我六个去,你不知道有个办法是out in嘛
2011-2-20 08:50
0
游客
登录 | 注册 方可回帖
返回
//