zoukankan      html  css  js  c++  java
  • 驱动程序中获取当前进程的进程名的方法

    在内核驱动程序中,可以通过PsGetCurrentProcess函数来获取当前调用驱动的进程的EPROCESS结构的地址.很多文章都说在EPROCESS结构的0x174偏移处存放着进程名.这里提供另外一种方法来获取这个进程名.思路如下:驱动程序的加载函数DriverEntry是运行在System进程中的.通过PsGetCurrentProcess可以获取System进程的内核EPROCESS结构的地址,然后从该地址开始寻找"System"字符串.找到后,便是EPROCESS的进程名存放的偏移处.得到进程名在EPROCESS结构的偏移后,以后的进程调用驱动的时候,就可以直接在该偏移处获取当前进程名.代码如下:

    #pragma INITCODE
    ULONG GetProcessNameOffset()
    {
    PEPROCESS curproc;
    ULONG procNameOffset;
    curproc = PsGetCurrentProcess();
    for(int i=0; i< 4096; i++)
    {
    if( !strncmp( "System", (PCHAR) curproc + i, strlen("System") ))
    {
    procNameOffset = i;
    return procNameOffset;
    }
    }
    return 0;
    }

    PEPROCESS hp = PsGetCurrentProcess();
    PTSTR sname = (PTSTR)((ULONG)hp+GetProcessNameOffset());
    KdPrint(("当前进程:%s ", sname));

  • 相关阅读:
    版本管理
    图解电路
    Java语言基础
    电工学入门
    11个例子教会你看电路图
    如何提高STM32的学习效率
    开发板入门
    Altium Designer
    电子设计从零开始
    推荐书籍
  • 原文地址:https://www.cnblogs.com/mayingkun/p/3859978.html
Copyright © 2011-2022 走看看