Windows进程&线程
+ -

Windows内核进程&线程函数大全

2023-11-13 102 0
1.    PEPROCESS NTAPI PsGetCurrentProcess
2.    HANDLE NTAPI PsGetCurrentProcessId(VOID)    
3.    variable PsGetCurrentThreadId
4.    define PsGetCurrentThread()/ GetCurrentThreadId
5.    function PsGetCurrentProcessWin32Process(VOID)
6.    function PsGetCurrentProcessId(VOID)
7.    function PsGetCurrentProcessSessionId(VOID)
8.    function PsGetProcessExitTime(VOID)
9.    function PsGetCurrentProcessWin32Process(VOID)
10.    function PsGetCurrentProcessSessionId(VOID)
11.    function PsGetCurrentThreadWin32Thread(VOID)
12.    function PsGetCurrentThreadProcessId(VOID)
13.    function PsGetCurrentThreadTeb(VOID)
14.    function PsGetCurrentProcessId(VOID)
15.    function PsGetCurrentThreadProcess(VOID)
16.    function PsGetCurrentThreadStackLimit(VOID)
17.    function PsGetCurrentThreadStackBase(VOID)
18.    function PsGetCurrentThreadTeb(VOID)
19.    function PsGetCurrentThreadWin32Thread(VOID)
20.    function PsGetCurrentThreadId(VOID)
21.    function PsGetCurrentThreadProcessId(VOID)
22.    function PsGetCurrentThreadPreviousMode(VOID)
23.    function PsGetJobUIRestrictionsClass(PEJOB Job)
24.    function PsGetJobLock(PEJOB Job)
25.    function PsGetJobSessionId(PEJOB Job)
26.    function PsGetProcessInheritedFromUniqueProcessId(PEPROCESS Process)
27.    function PsGetProcessWin32Process(PEPROCESS Process)
28.    function PsGetProcessPeb(PEPROCESS Process)
29.    function PsGetProcessImageFileName(PEPROCESS Process)
30.    function PsGetProcessSecurityPort(PEPROCESS Process)
31.    function PsGetProcessPriorityClass(PEPROCESS Process)
32.    function PsGetProcessExitProcessCalled(PEPROCESS Process)
33.    function PsGetProcessJob(PEPROCESS Process)
34.    function PsGetProcessExitStatus(PEPROCESS Process)
35.    function PsGetProcessCreateTimeQuadPart(PEPROCESS Process)
36.    function PsGetProcessId(PEPROCESS Process)
37.    function PsGetProcessDebugPort(PEPROCESS Process)
38.    function PsGetProcessSectionBaseAddress(PEPROCESS Process)
39.    function PsGetProcessWin32WindowStation(PEPROCESS Process)
40.    function PsGetNextProcess(IN PEPROCESS OldProcess)

41.    function PsGetProcessSessionId(IN PEPROCESS Process)
42.    function PsGetProcessSessionIdEx(IN PEPROCESS Process)
43.    function PsGetThreadProcess(_In_ PETHREAD Thread)
44.    function PsGetThreadWin32Thread(_In_ PETHREAD Thread)
45.    function PsGetThreadHardErrorsAreDisabled(_In_ PETHREAD Thread)
46.    function PsGetThreadId(_In_ PETHREAD Thread)
47.    function PsGetProcessExitProcessCalled(_In_ PEPROCESS Process)
48.    function PsGetProcessExitStatus(_In_ PEPROCESS Process)
49.    function PsGetProcessSecurityPort(_In_ PEPROCESS Process)
50.    function PsGetThreadTeb(_In_ PETHREAD Thread)
51.    function PsGetProcessWin32WindowStation(_In_ PEPROCESS Process)
52.    function PsGetProcessInheritedFromUniqueProcessId(_In_ PEPROCESS Process)
53.    function PsGetThreadProcess(_In_ PETHREAD Thread)
54.    function PsGetProcessSessionId(_In_ PEPROCESS Process)
55.    function PsGetProcessWin32Process(_In_ PEPROCESS Process)
56.    function PsGetThreadFreezeCount(_In_ PETHREAD Thread)
57.    function PsGetThreadProcess(_In_ PETHREAD Thread)
58.    function PSGetPropertyDescriptionListFromString(LPCWSTR, REFIID, void **)
59.    function PSGetPropertyDescription(REFPROPERTYKEY, REFIID, void **)
60.    function PsGetThreadFreezeCount(IN PETHREAD Thread)
61.    function PsGetThreadTeb(IN PETHREAD Thread)
62.    function PsGetThreadId(IN PETHREAD Thread)
63.    function PsGetThreadHardErrorsAreDisabled(IN PETHREAD Thread)
64.    function PsGetThreadSessionId(IN PETHREAD Thread)
65.    function PsGetThreadWin32Thread(IN PETHREAD Thread)
66.    function PsGetThreadProcessId(IN PETHREAD Thread)
67.    function PsGetThreadProcess(IN PETHREAD Thread)
68.    function PsGetCurrentThreadWin32ThreadAndEnterCriticalRegion(_Out_ HANDLE *OutProcessId)
69.    function PsGetNextProcess(IN PEPROCESS OldProcess OPTIONAL)
70.    function PSGetPropertyKeyFromName(PCWSTR name, PROPERTYKEY *key)
71.    function PSGetPropertySystem(REFIID riid, void **obj)
72.    define PsGetVersion(a, b, c, d)
73.    function PSGetPropertyDescription(REFPROPERTYKEY propkey, REFIID riid, void **ppv)
74.    function PSGetPropertyDescriptionListFromString(LPCWSTR proplist, REFIID riid, void **ppv)
75.    function PsGetNextProcessThread(IN PEPROCESS Process, IN PETHREAD Thread OPTIONAL)
76.    function PsGetNextProcessThread(IN PEPROCESS Process, IN PETHREAD Thread OPTIONAL)
77.    function PsGetContextThread(IN PETHREAD Thread, IN OUT PCONTEXT ThreadContext, IN KPROCESSOR_MODE PreviousMode)
78.    function PsGetVersion(OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL)
79.    function PsGetVersion(OUT PULONG MajorVersion OPTIONAL, OUT PULONG MinorVersion OPTIONAL, OUT PULONG BuildNumber OPTIONAL, OUT PUNICODE_STRING CSDVersion OPTIONAL)
80.    function ID3D10Device::PSGetShader([out] ID3D10PixelShader **ppPixelShader)
  • PsGetCurrentProcess/IoGetCurrentProcess
PEPROCESS NTAPI IoGetCurrentProcess    (VOID)
{
    /* Return the current thread's process */
    return (PEPROCESS)PsGetCurrentThread()->Tcb.ApcState.Process;
}
  • PsGetCurrentProcessId
HANDLE NTAPI PsGetCurrentProcessId(VOID)
{
    return (HANDLE)PsGetCurrentProcess()->UniqueProcessId;
}
  • GetCurrentThreadId
DWORD WINAPI GetCurrentThreadId(VOID)
{
    return HandleToUlong(NtCurrentTeb()->ClientId.UniqueThread);
}

#define NtCurrentTeb(void)       NtXCurrentTeb
  • PsGetCurrentProcessSessionId
ULONG NTAPI PsGetCurrentProcessSessionId    (    VOID         )    
{
    return MmGetSessionId(PsGetCurrentProcess());
}

ULONG NTAPI MmGetSessionId(    IN PEPROCESS Process)
{
    PMM_SESSION_SPACE SessionGlobal;

    /* The session leader is always session zero */
    if (Process->Vm.Flags.SessionLeader == 1) return 0;

    /* Otherwise, get the session global, and read the session ID from it */
    SessionGlobal = (PMM_SESSION_SPACE)Process->Session;
    if (!SessionGlobal) return 0;
    return SessionGlobal->SessionId;
}

0 篇笔记 写笔记

Windbg 进程环境块!peb
!peb 查看当前进程环境块(PEB)注意:在64位操作系统下,使用64位和32windbg调试32位进程时,看到的地址不一样。如64位下的notepad内容如下:0:001> !pebPEB at 000007fffffd3000 InheritedAddressSpace:......
Windows内核线程睡眠
许多读者一定使用过Sleep函数。这能使程序停下一段时间。许多需要连续、长期执行,但是又不希望占太多CPU使用率的任务,可以在中间加入睡眠。这样能使CPU使用率大大降低。即使睡眠的时间非常短(几十个毫秒)。在驱动中也可以睡眠。使用到的内核函数的原型如下: NTSTATUS Ke......
Windows内核驱动创建线程
有时候需要使用线程来完成一个或者一组任务。这些任务可能耗时过长,而开发者又不想让当前系统停止下来等待。在驱动中停止等待很容易使整个系统陷入“停顿”,最后可能只能重启电脑。但一个单独的线程长期等待,还不至于对系统造成致命的影响。另一些任务是希望长期、不断的执行,比如不断写入日志。为此启动一个特殊的线程......
互斥体的多进程通信
时常需要进行多进程进行通讯,比如说进程A产生了一件事件,而进程B需要及时的知道这个事件,进行某些操作。这时我们可以这样操作1.b进程创建一个全局命名互斥体2.b进程等待事件3.a进程打开个这个互斥体4.a进程释放这个互斥体注意:这个互斥体如为了跨session,请一定给这个命名加上Global前......
远程的DLL注入进程的实现
进程注入的原理就是让目标进程执行一段自己的代码,而这个实现的前提是1.让目标进程可以访问我们自己写的代码2.让目标进程跳到我们的代码入口执行3.执行完成后可以正常退出,不引发进程的crash。这里采用的是DLL远程注入方式.大概原理是基本上所有的进程都会依赖kernel32.dll,而这个DLL......
Windows驱动线程创建与退出
在应用层时,我们可以使用CreateThread来创建一个线程,这时如果创建成功,会退回一个线程句柄。而当创建的这个线程退出时,这个线程变为激活态,即我们可以通过WatiForSingleObject返回WAIT_OBJECT_0.如:HANDLE hThread = CreateThread(......
CreateProcess子进程管道输出重定向
这里时子进程的输出重客向到一个一个文件中,适用于子进程为控制台输出的程序。 SYSTEMTIME sys; GetLocalTime(&sys); SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES),NULL......
根据进程名获取进程ID
打开设备管理器,会看到系统当前所有运行的进程,运行时信息包括进程名,进程ID等。设备管理器默认不显示进程名,可点击 查看>>选择名>>进程ID但假如已知运行了一个进程,想通过编程的方法来获取进程ID,请看下列代码#include#incl......
使用ZwQuerySystemInformation函数枚举进程
使用ZwQuerySystemInformation函数枚举Windows系统进程typedef struct _SYSTEM_PROCESSES { ULONG NextEntryDelta; //构成结构序列的偏移量; ULONG......
内核中读取指定进程的内存空间
Windows驱动运行于内核中,应用层的所有进程共享。在应用层中,windows提供了如通过系统调用进入到内核中。在应用层不能直接引用或使用内核的地址。但在内核中,是可以使用应用层的地址的。但是由于进程的调度,当我们在内核中操作应用层的地址时,可能随时发生进程切换,这时我们使用的内存地址可能因为进程......
获取或修改指定进程ID的内存数据
进程ID已知的前提下,如何获取该进程在内存中的数据,下面提供一种方法。void GetProcessMemory(ULONG PID,,PVOID PVOID pRaddAddr){ PROCESS_INFORMATION pi; ZeroMemory(&pi, si......
COM进程模型及可用性特性
COM进程模型COM有两种进程模型:进程内对象和进程外对象。如果是进程内对象,则它在客户进程空间上运行;如果是进程外对象,则它运行在本机上的另一个进程空间或远程机上。进程内服务器:服务程序被加载到客户的进程空间,在Win32环境下,通常服务程序代码以动态连接库(DLL)的形式实现;本地服务器:服......
CreateThreadpoolWork线程
PTP_WORK WINAPI CreateThreadpoolWork( __in PTP_WORK_CALLBACK pfnwk, __in_out_opt PVOID pv, __in_opt PTP_CALLBACK_ENVIRON pcbe);......
Windows内核线程休眠KeSleep函数
//传入的数据若为1000,则 睡眠的时间为: 1000 * 100 ns * 10 *1000 =1sVOID KeSleep(LONG msec){ #define DELAY_ONE_MICROSECOND (-10) #define DELAY_ONE_MILLI......
让Windows音频服务以独立的进程AudioSvr运行
Windows控制台下以管理员运行:sc config audiosrv type= own然后重新启动电脑,这样系统就会出现一个AudioSvr......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!