百度已收录

在驱动程序中可以通过PsGetCurrentProcess函数来获取当前调用驱动的进程的EPROCESS结构的地址,驱动程序的加载函数DriverEntry是运行在System进程中的,通过PsGetCurrentProcess可以获取System进程的内核EPROCESS结构的地址,然后从该地址开始寻找"System"字符串,找到EPROCESS的进程名存放的偏移处,得到进程名在EPROCESS结构的偏移后就可以直接在该偏移处获取当前进程名

ULONG GetProcessNameOffset()
{
    ULONG Offset;
    PEPROCESS CurrentProcess = PsGetCurrentProcess();
    for (int i = 0; i < 4096; i++)
    {
        if (!strncmp("System", (PCHAR)CurrentProcess + i, strlen("System")))
        {
            Offset = i;
            return Offset;
        }
    }
    return 0;
}