首页
社区
课程
招聘
[求助]内核HOOK NtReadVirtualMemory 时获到不到进程名求解
发表于: 2013-9-10 18:22 4765

[求助]内核HOOK NtReadVirtualMemory 时获到不到进程名求解

2013-9-10 18:22
4765
NTSTATUS  __stdcall MyNtReadVirtualMemory(

                                           IN HANDLE               ProcessHandle,
                                           IN PVOID                BaseAddress,
                                           OUT PVOID               Buffer,
                                           IN ULONG                NumberOfBytesToRead,
                                           OUT PULONG              NumberOfBytesReaded OPTIONAL
)
{
  NTSTATUS    status;
  PEPROCESS   pEProcess=0;
  char*       proname=0;
  
  if (!strcmp("calc.exe",GetProcessNameFromEProc(0)))   //此处GetProcessNameFromEProc(0) 不成功有别的办法没还是我写错了
  {
         
    if (!ProcessHandle)
    {
      return 0;

    }
    status = ObReferenceObjectByHandle(ProcessHandle,PROCESS_ALL_ACCESS,NULL,0,(PVOID*)(&pEProcess),NULL);

    if(!NT_SUCCESS(status))       
    {
      return 0;

    }
    ObDereferenceObject(pEProcess);
    proname=GetProcessNameFromEProc(pEProcess);
    if (PsGetCurrentProcessId()!=PsGetProcessId(pEProcess))
    {
      if (!strcmp("calc.exe",proname) || !strcmp("MDL.exe",proname))
      {
        return STATUS_ACCESS_DENIED;
      }
    }

  }
  return (NTSTATUS)RealNtReadVirtualMemory(ProcessHandle,BaseAddress,Buffer,NumberOfBytesToRead,NumberOfBytesReaded OPTIONAL);
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (4)
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
PsGetProcessImageFileName(IoGetCurrentProcess())
2013-9-10 18:27
0
雪    币: 97
活跃值: (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
3Q不过这容易蓝 换PID 我换了PID只能保护一个 如何保护多个呢
2013-9-10 19:08
0
雪    币: 110
活跃值: (34)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
4
由句柄得到EPROCESS,然后硬编码搜索得到进程名……
不过保护进程还是object hook效果好
2013-9-10 19:26
0
雪    币: 140
活跃值: (125)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
检查你PID的时候  保存成数组 链表之类的咯~
2013-9-10 19:38
0
游客
登录 | 注册 方可回帖
返回
//