用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
chenhui530的公告
欢迎大家来到我的博客.认识我的人也许知道以前我有过几个博客都因为某些原因而关闭,消失了,这次算是在CSDN上安家了希望认识我的朋友和即将认识的新朋友以及广大程序爱好者们支持我,谢谢!!
文章分类
C#文章
C#原创
VB文章
VB原创
卧龙传说的博客
VC文章
VC原创
存档

原创  在Ring0下获取进程路径 收藏

 程序演示了在Ring0下通过FILE_OBJECT获取文件路径(至于怎么从EPROCESS获取FILE_OPBJECT就不要再问我了)

 

BOOLEAN GetProcessImageName(PFILE_OBJECT FileObject,LPSTR ProcessImageName)
{
 NTSTATUS ntStatus=STATUS_BUFFER_OVERFLOW;
 ULONG uSize=1;
 UNICODE_STRING ustrDosName={0};
 PFILE_NAME_INFORMATION NameInfo = NULL;
 BOOLEAN blnRet=FALSE;
 if (!ProcessImageName ||
  !MmIsAddressValid(FileObject) ||
  !MmIsAddressValid(FileObject->DeviceObject))
  return FALSE;
 NameInfo = ExAllocatePool(PagedPool,uSize * 0x200);
 if (!NameInfo) return FALSE;
 ntStatus=IrpQueryInformationFile(FileObject,NameInfo,uSize * 0x200,FileNameInformation);
 while (ntStatus==STATUS_BUFFER_OVERFLOW)
 {
  ExFreePool(NameInfo);
  uSize++;
  NameInfo = ExAllocatePool(PagedPool,uSize * 0x200);
  ntStatus=IrpQueryInformationFile(FileObject,NameInfo,uSize * 0x200,FileNameInformation);
 }
 if (NT_SUCCESS(ntStatus))
 {
  if (KeGetCurrentIrql()==PASSIVE_LEVEL)
  {
   ntStatus=RtlVolumeDeviceToDosName(FileObject->DeviceObject,&ustrDosName);
   if (NT_SUCCESS(ntStatus))
   {
    WCHAR strFileName[260]={0};
    UNICODE_STRING ustrFileName;
    STRING astrFileName={0};
    wcscpy(strFileName,ustrDosName.Buffer);
    if (NameInfo->FileNameLength<512)
    {
     wcscat(strFileName,NameInfo->FileName);
    }
    else
    {
     memcpy(&strFileName[2],NameInfo->FileName,511);
    }
    RtlInitUnicodeString(&ustrFileName,strFileName);
    if (RtlUnicodeStringToAnsiString(&astrFileName,&ustrFileName,TRUE)==STATUS_SUCCESS)
    {
     strcpy(ProcessImageName,astrFileName.Buffer);
     RtlFreeAnsiString(&astrFileName);
     DbgPrint("路径:%s\n",ProcessImageName);
     blnRet=TRUE;
    }
    RtlFreeUnicodeString(&ustrDosName);
   }
  }
 }
 if (NameInfo) ExFreePool(NameInfo);
 return blnRet;
}

发表于 @ 2008年10月10日 21:29:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:病毒诊断分析程序(病毒分析师的福音) | 新一篇:VB 远程注入/卸载/自我删除(RtlCreateUserThread)

  • 发表评论
  • 评论内容:
  •  
Copyright © chenhui530
Powered by CSDN Blog