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));

  • 相关阅读:
    极大/小搜索,alpha/beta剪枝
    消息系统
    渲染主线程都在干什么
    好玩的虚拟CPU执行代码
    好玩的隐藏属性
    好玩的对象存储
    透视投影矩阵
    绕任意轴旋转
    视图变换
    正交投影矩阵
  • 原文地址:https://www.cnblogs.com/mayingkun/p/3859978.html
Copyright © 2011-2022 走看看