首页
社区
课程
招聘
[求助]PsSetCreateProcessNotifyRoutine
发表于: 2014-8-23 12:08 6643

[求助]PsSetCreateProcessNotifyRoutine

2014-8-23 12:08
6643
”PsSetCreateProcessNotifyRoutine得到np和游戏的进程“,我是菜鸟研究代码,然后看大牛的解释文档看到这句话我百思不得其解,
这个函数功能PsSetCreateProcessNotifyRoutine程序添加一个driver-supplied回调例程,或者从列表删除它的例程调用过程时创建或删除。

NTSTATUS PsSetCreateProcessNotifyRoutine(
  _In_  PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
  _In_  BOOLEAN Remove
);
两个参数都是进来的

PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,
VOID
(*PCREATE_PROCESS_NOTIFY_ROUTINE) (
    IN HANDLE  ParentId,
    IN HANDLE  ProcessId,
    IN BOOLEAN  Create
    );
作者代码的流程是
自己定义的GameGuardProcessNotifyRoutine()-----》PsSetCreateProcessNotifyRoutine(GameGuardNotifyRoutine, FALSE);---》VOID GameGuardNotifyRoutine(IN HANDLE hparentId, IN HANDLE PId,IN BOOLEAN bCreate)
GameGuardNotifyRoutine部分代码头文件作者也定义了一次
VOID GameGuardNotifyRoutine(IN HANDLE hparentId, IN HANDLE PId,IN BOOLEAN bCreate)
{
  PEPROCESS Eprocess;
  PEPROCESS eprcx;
  NTSTATUS rc;

  //从函数可以得知这个函数是通过pid获得eprocess的
  rc=PsLookupProcessByProcessId(PId,&Eprocess);//获取EPROCESS

到这个函数我就没看到那里有地方传IN HANDLE PId进来,作者就说已经得到了EPROCESS 的进程了。

求大牛普及小白
!!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
应该是 APC投射的吧,意思就说是回调的,Notify的噢,猜的没细看。
2014-8-23 12:56
0
雪    币: 4
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哥,能帮仔细看看么?任务管理器上是隐藏的np进程,根本就没的NP的进程ID
2014-8-23 13:43
0
雪    币: 19
活跃值: (1111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
VOID GameGuardNotifyRoutine(IN HANDLE hparentId, IN HANDLE PId,IN BOOLEAN bCreate)

IN HANDLE PId 是系统传进来的
2014-8-23 15:26
0
雪    币: 116
活跃值: (36)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
这是个系统回调,有新进程创建时会自动调用这个回调,这样就得到了进程pid了。
2014-8-23 16:05
0
雪    币: 4
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢!!!
2014-8-23 17:24
0
游客
登录 | 注册 方可回帖
返回