能力值:
( LV2,RANK:10 )
|
-
-
2 楼
你是想拦截远程线程吧?
可以注册一个进程回调,维护一个哈希表即可……
或者查看线程个数……如果为0则是新进程
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
我已经屈服了。。。
现在用的是查看线程数量
不过你说错了一点 应该是线程数量=1 是新进程
进程已经启动鸟 线程数量怎么可能是0~
还是得谢谢你咯~ 3Q哈~
如果兄弟你说一下 回调+HASH 那就更好了 嘿嘿~
|
能力值:
( LV3,RANK:30 )
|
-
-
4 楼
进程创建回调里,以pid为值,将bitmap对应位置位,然后在线程回调里,查找线程所属pid是否在bitmap被置位,被置位,则是新进程的第一个线程,同时清除bitmap对应bit
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
如果你是先执行NtResumeThread再查看线程数的话线程数就是1
如果你是先查看线程数再执行NtResumeThread的话,线程数就是0
还有……尽量少用hook尤其是在装机量大的场合……完全可以用回调实现……
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
直接通过ZwQuerySystemInformation通过11号获取进程结构SYSTEM_PROCESS_INFORMATION
无需硬编
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
ring3 传进程 到 ring0
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
11号是SystemModuleInformation啊
WRK里面的返回结构体是
typedef struct _RTL_PROCESS_MODULE_INFORMATION {
HANDLE Section; // Not filled in
PVOID MappedBase;
PVOID ImageBase;
ULONG ImageSize;
ULONG Flags;
USHORT LoadOrderIndex;
USHORT InitOrderIndex;
USHORT LoadCount;
USHORT OffsetToFileName;
UCHAR FullPathName[ 256 ];
} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION;
typedef struct _RTL_PROCESS_MODULES {
ULONG NumberOfModules;
RTL_PROCESS_MODULE_INFORMATION Modules[ 1 ];
} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES;
好像没有线程数量啊。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
typedef struct _SYSTEM_PROCESS_INFORMATION {
ULONG NextEntryOffset;
ULONG NumberOfThreads;
LARGE_INTEGER SpareLi1;
LARGE_INTEGER SpareLi2;
LARGE_INTEGER SpareLi3;
LARGE_INTEGER CreateTime;
LARGE_INTEGER UserTime;
LARGE_INTEGER KernelTime;
UNICODE_STRING ImageName;
KPRIORITY BasePriority;
HANDLE UniqueProcessId;
HANDLE InheritedFromUniqueProcessId;
ULONG HandleCount;
ULONG SpareUl2;
ULONG SpareUl3;
ULONG PeakVirtualSize;
ULONG VirtualSize;
ULONG PageFaultCount;
ULONG PeakWorkingSetSize;
ULONG WorkingSetSize;
ULONG QuotaPeakPagedPoolUsage;
ULONG QuotaPagedPoolUsage;
ULONG QuotaPeakNonPagedPoolUsage;
ULONG QuotaNonPagedPoolUsage;
ULONG PagefileUsage;
ULONG PeakPagefileUsage;
ULONG PrivatePageCount;
} SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION;
SystemProcessInformation
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
我就是这么获取的
但是这样是先获取到全部进程的数据
还需要申请/释放内存
我想换个方式提高一下效率
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
没什么好办法的,除非自己申请进程锁,然后遍历activethreadlist 不过不稳定而且需要适配多个系统
另外这个并不慢
|
能力值:
( LV3,RANK:30 )
|
-
-
12 楼
这么做,只能是在hookzwresume这样的环境下有用
哪天要你搞X64,你会没辙的。。。。。
然后你会想到PsSetCreateThreadNotify,然后。。。。你会发现这个回调里,query无论如何都会失败
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
X64可以query system information的
|
能力值:
( LV3,RANK:30 )
|
-
-
14 楼
你XP或者03试试。。。。
|
|
|