yxflong
驱动牛犊
驱动牛犊
  • 注册日期2007-02-08
  • 最后登录2011-03-21
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:2664回复:1

通过句柄怎么获取进程名?

楼主#
更多 发布于:2007-06-30 00:42
如果根据ZwCreateProcess返回的句柄ProcessHandle得到新创建的进程的ID?
在2003下可以通过ZwQueryInformationProcess得到,但是在2000下面呢?
如果用ZwQueryInformationProcess得到的总是0。
reayi
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2010-03-30
  • 粉丝0
  • 关注0
  • 积分83分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-08-23 11:09
NTSTATUS
  ObReferenceObjectByHandle(
  IN HANDLE  Handle,
  IN ACCESS_MASK  DesiredAccess,
  IN POBJECT_TYPE  ObjectType  OPTIONAL,
  IN KPROCESSOR_MODE  AccessMode,
  OUT PVOID  *Object,
  OUT POBJECT_HANDLE_INFORMATION  HandleInformation  OPTIONAL
  );

NTSTATUS ns;
PVOID pProcess=NULL;

ns= ObReferenceObjectByHandle( ProcHandle, 0, NULL, KernelMode, &pProcess, NULL ) ;
从pProcess这个内核对象直接获取pid,根据系统不通,偏移不同,如下:
#define PIDOffset_XP          0x84
#define PIDOffset_2K          0x9c
#define PIDOffset_2K3          0x94
游客

返回顶部