PsGetProcessImageFileName是未公开的例程,其作用本质上而言就是读取EPROCESS结构的偏移(镜像文件名),其原型如下:
extern "C" PCHAR PsGetProcessImageFileName(PEPROCESS pEProcess);
其返回值为窄字节类型的字符串,最近在使用该例程时发现一个问题,其返回值并不完整,返回名称是残缺不全的15字节,本文正是为了追溯该问题的原因而写,并提出相关解决方案,网上资料甚少。
看一段代码:
- PEPROCESS pCurrentEprocess;
- //pid是进程id
- if (NT_SUCCESS(PsLookupProcessByProcessId((HANDLE)pid, &pCurrentEprocess)))
- {
- DbgPrint("进程名字为: %s 进程PID = %d 进程的父Pid = %d\n",