(转)NtCreateUserProcess参数

http://www.skyfishes.com/vc/ntcreateuserprocess/

  最近有个程序需要修改子进程的父进程来达到隐藏自身的效果,本来Hook NtCreateProcessEx简单搞定,结果发现Win7下断不下来

  果断谷歌,发现Vista之后CreateProcess不再经过NtCreateProcessEx,而是调用NtCreateUserProcess进入内核,进行文件的映射等操作

  赶紧来记下NtCreateUserProcess参数,好不容易才找到的

typedef struct _NT_PROC_THREAD_ATTRIBUTE_ENTRY {
    ULONG Attribute;    // PROC_THREAD_ATTRIBUTE_XXX,参见MSDN中UpdateProcThreadAttribute的说明
    SIZE_T Size;        // Value的大小
    ULONG_PTR Value;    // 保存4字节数据(比如一个Handle)或数据指针
    ULONG Unknown;      // 总是0,可能是用来返回数据给调用者
} PROC_THREAD_ATTRIBUTE_ENTRY, *PPROC_THREAD_ATTRIBUTE_ENTRY;

typedef
struct _NT_PROC_THREAD_ATTRIBUTE_LIST { ULONG Length; // 结构总大小 PROC_THREAD_ATTRIBUTE_ENTRY Entry[1]; } NT_PROC_THREAD_ATTRIBUTE_LIST, *PNT_PROC_THREAD_ATTRIBUTE_LIST;
NTSTATUS NtCreateUserProcess( OUT PHANDLE ProcessHandle, OUT PHANDLE ThreadHandle, IN ACCESS_MASK ProcessDesiredAccess, IN ACCESS_MASK ThreadDesiredAccess, IN POBJECT_ATTRIBUTES ProcessObjectAttributes OPTIONAL, IN POBJECT_ATTRIBUTES ThreadObjectAttributes OPTIONAL, IN ULONG CreateProcessFlags, IN ULONG CreateThreadFlags, IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters, IN PVOID Parameter9, IN PNT_PROC_THREAD_ATTRIBUTE_LIST AttributeList );

 

posted @ 2013-01-07 10:45  himessage  阅读(6546)  评论(0编辑  收藏  举报