监控远程线程代码

 
原理参考 http://zhidao.baidu.com/question/35829777.html

NTSTATUS
HookNtCreateThread(
    IN PNtCreateThread        OrgFunction,
    OUT PHANDLE            ThreadHandle,
    IN ACCESS_MASK          DesiredAccess,
    IN POBJECT_ATTRIBUTES  ObjectAttributes OPTIONAL,
    IN HANDLE              ProcessHandle,                        //目标进程
    OUT PCLIENT_ID          ClientId,
    IN PCONTEXT            ThreadContext,
    IN PINITIAL_TEB        InitialTeb,
    IN BOOLEAN              CreateSuspended
    )
{
    NTSTATUS status;
    PEPROCESS Process;
    UNICODE_STRING DosPath;

   
    if ((NT_SUCCESS(ObReferenceObjectByHandle(ProcessHandle, 0, NULL, KernelMode, &Process, NULL))))
    {
        if (GetProcessDosPath(Process, &DosPath))
        {
            if (!IsListEmpty((PLIST_ENTRY)((PBYTE)Process + KPROCESS_THREAD_LIST_OFFSET)) &&
                Process != IoGetCurrentProcess())
            {
                UNICODE_STRING TargetPath;
                if (GetProcessDosPath(IoGetCurrentProcess(), &TargetPath))
                {
                    KdPrint(("Target:%wZ/n", &TargetPath));
                    RtlFreeUnicodeString(&TargetPath);
                }
                KdPrint(("CreateRemoteThread->%wZ/n", &DosPath));
            }
            RtlFreeUnicodeString(&DosPath);
        }
    }
    status = OrgFunction(ThreadHandle, DesiredAccess, ObjectAttributes, ProcessHandle, ClientId, ThreadContext, InitialTeb, CreateSuspended);
    return status;
}
2ksp4+vm6通过
 
HookNtCreateThreadEx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值