能力值:
( LV2,RANK:10 )
|
-
-
2 楼
我也研究了一段时间,确实没找到好的办法,改名都不行的
|
能力值:
( LV9,RANK:610 )
|
-
-
3 楼
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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
);
|
第七个参数 ULONG CreateProcessFlags不就是吗?
你先自己用CreateProcess创建一个挂起的进程,然后跟踪一下,看看这个标志到调用ZwCreateUserProcess的时候变成了什么不就行了?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
恩,跟了不是。
这个API非常奇怪,为啥HOOK他CreateRemoteThread联级注入就失败。
用OD跟,单步走程序10次里边有只有2次能注入。
如果程序自己跑,完全注入不了,CreateRemoteThread错误8
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
LZ找到可以创建挂起的进程方法了吗?怎么写?
|
能力值:
( LV9,RANK:610 )
|
-
-
6 楼
看了一下,NtCreateUserProcess创建的进程本来就是挂起的,如果用户没指定CREATE_SUSPENDED,那么就再执行NtResumeThread恢复执行
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
LONG stat =TrueNtCreateUserProcess(
ProcessHandle,
ThreadHandle,
Parameter2,
Parameter3,
ProcessSecurityDescriptor,
ThreadObjectAttributes,
CreateProcessFlags,
CreateThreadFlags,
ProcessParameters,
Parameter9,
ppuUnknown);
return stat;
什么也不做,返回句柄后,程序直接就运行了,不用NtResumeThread函数啊。
LONG stat =TrueNtCreateUserProcess(
ProcessHandle,
ThreadHandle,
Parameter2,
Parameter3,
ProcessSecurityDescriptor,
ThreadObjectAttributes,
CREATE_SUSPENDED, //修改这里也停不下来。。。。
CreateThreadFlags,
ProcessParameters,
Parameter9,
ppuUnknown);
到底是哪里出错了。。。。大牛指导啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
呵呵,他说的是hook后的问题。。。
@楼主 问题都描述不清楚怎么来提问啊
你应该是说hook后怎么修改参数让他暂停的问题吧,这是做不到的
因为CreateProcessInternal流程如果判断上层函数没有设置suspend,就会主动调用NtResumeThread,而对NtCreateUserProcess来说,就如他上面讲的,默认就是传入suspend参数的
所以你要暂停它,要么hook CreateProcessInternal/createprocess修改上层参数,要么hook ntresumethread阻止他启动
但是这样一样解决不了你remote thread的问题,你是要注入services进程吧(又是问题不说清),跨session注入不做处理是调用不了createremotethread的,可以看看论坛里的跨session注入老帖
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
9 楼
ntdll.ZwCreateUserProcess 无论上层是否设置CREATE_SUSPENDED, 其返回时创建的进程都是挂起的
既然是挂起的, 也就没有必要纠结这个问题了, 直接完做该做的事, 得到想要的结果即可
可行的步骤如下:
1. Hook ntdll.ZwCreateUserProcess
2. 得到hProcess, hThread
3. 定位目标进程OEP
4. Shellcode写入目标进程
5. 修改目标进程OEP, JMP Shellcode (Shellcode中恢复原始OEP并跳回)
6. ntdll.ZwCreateUserProcess 返回
7. 坐等目标进程加载DLL
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
10 楼
钩ZwCreateThread,判断是否是第一个线程,threadcontext->eax就是OEP,然后写shellcode,这样会不会好一些.
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
11 楼
未尝试过, 但如果是可行的, 又学到一招, 赞之~
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
挂CreateProcessInternal/createprocess远程注入成功,为啥挂NtCreateUserProcess远程线程注入就失败呢。任意进程都失败。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
不是说了因为createprocess内部就会resume么?
|
能力值:
( LV12,RANK:380 )
在线值:

|
-
-
14 楼
我正好碰见一个问题 怎么在OD下ZwCreateThread创建的线程的断点
它用ZwResumeThread一下子就飞了,断不住
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
NtCreateUserProcess执行返回之后判断resume不resume。
这和我创建线程注入到子进程没关系啊。
|
能力值:
( LV12,RANK:380 )
在线值:

|
-
-
16 楼
这个是我昨晚刚好遇到的问题 借用下帖子
|
|
|