找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5040|回复: 3

[代码原创]开启内核线程调用Nt系列函数

  [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-7-21 19:21:31 | 显示全部楼层 |阅读模式
既然有人问到了,我就把代码贴出来:
#include <ntddk.h>
#include "ssdt.h"

NTKERNELAPI NTSTATUS NtOpenProcess (
   OUT PHANDLE ProcessHandle,
   IN ACCESS_MASK DesiredAccess,
   IN POBJECT_ATTRIBUTES ObjectAttributes,
   IN PCLIENT_ID ClientId OPTIONAL);

KEVENT kEvent;
ULONG MyTFpid;
ULONG pNtTerminateProcess;

// 线程函数
VOID MyThreadFunc(IN PVOID context)
{
    HANDLE ProcessHandle=0;
    CLIENT_ID objCid;
    OBJECT_ATTRIBUTES objOa;
    RtlZeroMemory(&objOa,sizeof(OBJECT_ATTRIBUTES));
    RtlZeroMemory(&objCid,sizeof(CLIENT_ID));
    objOa.Length = sizeof(objOa);
    objCid.UniqueProcess = (HANDLE)MyTFpid;//进程pid
    NtOpenProcess (&ProcessHandle, PROCESS_ALL_ACCESS, &objOa, &objCid);//打开进程
    DbgPrint("hProcess=%ld",ProcessHandle);
    if (pNtTerminateProcess!=0)
    {
        __asm
        {
            push 0
            push ProcessHandle
            call pNtTerminateProcess
        }
    }
    ZwClose(ProcessHandle);
    KeSetEvent(&kEvent, 0, TRUE);
    PsTerminateSystemThread(STATUS_SUCCESS);
}

VOID CreateThreadTest(ULONG PidToOpen)
{
    HANDLE     hThread;
    NTSTATUS status;
    UNICODE_STRING ustrTest;
    KeInitializeEvent(&kEvent, SynchronizationEvent, TRUE);
    RtlInitUnicodeString(&ustrTest, L"kernel thread test!");
    pNtTerminateProcess=GetSSDTRealAddr(GetSysCallIndex("NtTerminateProcess"));
    MyTFpid=PidToOpen;
    status = PsCreateSystemThread(&hThread, 0, NULL, NULL, NULL, MyThreadFunc, (PVOID)&ustrTest);
    if (!NT_SUCCESS(status))
    {
        DbgPrint("CreateThread Test Failed!");
    }
    ZwClose(hThread);
    KeWaitForSingleObject(&kEvent, Executive, KernelMode, FALSE, 0);
}

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-21 19:22:37 | 显示全部楼层
ssdt.h我发过了,你们自己找找吧,我忘记在哪个帖子里了。。。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-22 10:21:58 | 显示全部楼层
回复 3# naylon

具体问题具体分析,关于SetContextThread,可以参考我的帖子:VB无驱杀冰刃、狙剑、天琊 - TaKillThread

0

主题

20

回帖

0

精华

初来乍到

积分
0
发表于 2010-7-23 21:38:56 | 显示全部楼层
谢谢分享,正在学习内核编程中
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表