mylovebaby
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2005-02-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1486回复:15

请教Win9x下如何Hook进程创建&销毁的信息和过程!

楼主#
更多 发布于:2005-01-09 12:29
请各位大大不惜赐教~~
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-10 09:03
试试用PsSetCreateProcessNotifyRoutine生成一个通知事件,利用它的回调函数来通知进程的生成和销毁。
在交流中学习。。。
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-01-10 13:16
试试用PsSetCreateProcessNotifyRoutine生成一个通知事件,利用它的回调函数来通知进程的生成和销毁。


9x下也支持这个函数吗,你测试过了吗?
琢磨悟真知
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-10 13:35
[quote]试试用PsSetCreateProcessNotifyRoutine生成一个通知事件,利用它的回调函数来通知进程的生成和销毁。


9x下也支持这个函数吗,你测试过了吗? [/quote]
我在NT/2K上用的是这个。
刚才专门查了一下,好像Ps类函数(Process Structure Routines)是专门用于NT/2K平台的,都是由NTOSKRNL输出的,所以9x下应该是行不通的。
哪位有什么其他的方法可以实现?
在交流中学习。。。
mylovebaby
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2005-02-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-10 13:57
nt/2k好办,主要是9x,别的思路是有的,总觉得不太好用着别扭,想看看有啥正规点的做法没.

[编辑 -  1/10/05 by  mylovebaby]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-10 16:42
hook API,但不是正规方法
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
mylovebaby
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2005-02-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-10 22:52
大大,ring3的办法就不用了,俺主要想了解一下9x底层的过程.
怎么资料这么少咯.
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2005-01-11 11:05
[quote][quote]试试用PsSetCreateProcessNotifyRoutine生成一个通知事件,利用它的回调函数来通知进程的生成和销毁。


9x下也支持这个函数吗,你测试过了吗? [/quote]
我在NT/2K上用的是这个。
刚才专门查了一下,好像Ps类函数(Process Structure Routines)是专门用于NT/2K平台的,都是由NTOSKRNL输出的,所以9x下应该是行不通的。
哪位有什么其他的方法可以实现? [/quote]

nt4 你测试了吗?(我过2天就要测试,先问问!) :D
琢磨悟真知
mylovebaby
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2005-02-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-11 12:52
晕咯,就没兄弟能说一下吗
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-11 13:37
晕咯,就没兄弟能说一下吗

看看这个帖子吧,希望对你有用。
http://www.driverdevelop.com/forum/viewthread.php?tid=4899
在交流中学习。。。
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-11 23:24
9x有通知,是个IO控制,Create_Process与Destroy_Process消息,但只有PID,不知哪位兄弟有办法通过PID得到进程路径???,目前还没找到,哪们兄弟找个可要共享呀!!
aasa2
驱动中牛
驱动中牛
  • 注册日期2004-04-01
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分525分
  • 威望339点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-01-12 08:02
我看到谁来了?

[编辑 -  1/12/05 by  aasa2]
技术交流:aasa2@21cn.com QQ群:10863699
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2005-01-12 09:40
[quote]晕咯,就没兄弟能说一下吗

看看这个帖子吧,希望对你有用。
http://www.driverdevelop.com/forum/viewthread.php?tid=4899 [/quote]

是不是可以在应用层可以获取?交互一下
琢磨悟真知
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-01-12 09:46
楼上,这是VXD消息。
qiangguo64
驱动牛犊
驱动牛犊
  • 注册日期2005-01-12
  • 最后登录2009-08-28
  • 粉丝0
  • 关注0
  • 积分144分
  • 威望15点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-01-12 10:52
DWORD GetProcess(HANDLE prochandle, PCHAR ProcessName )
{
    HANDLE       CurProc;
    PVOID       ring3proc;
    char        *name;
    ULONG       i;

    //
    // Get the ring0 process pointer.
    //
    //CurProc = (HANDLE)VWIN32_GetCurrentProcessHandle();

    //
    // Now, map the ring3 PCB
    //
    ring3proc = (PVOID) SelectorMapFlat( Get_Sys_VM_Handle(),
(DWORD) (*(PDWORD) ((char *) prochandle+ 0x38)) | 0x7, 0 );

    if( ring3proc == (PVOID) -1 )
{
        strcpy( ProcessName, "???");
    }
else
{
        // copy out the process name (max 8 characters)
        //
        name = ((char *)ring3proc) + 0xF2;
        if( name[0] >= 'A' && name[0] < 'z' )
{
            strcpy( ProcessName, name );
            ProcessName[8] = 0;
        }
else
{
            strcpy( ProcessName, "???" );
        }
    }

    return 0;
}


VOID OnCreateProcess(DWORD ProcessToken)
{
   char name[16];
   GetProcess(ProcessToken^0x7E711D15,name);
}
qiangguo64
驱动牛犊
驱动牛犊
  • 注册日期2005-01-12
  • 最后登录2009-08-28
  • 粉丝0
  • 关注0
  • 积分144分
  • 威望15点
  • 贡献值1点
  • 好评度14点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-01-13 09:58
难道就没人试试上面的代码,楼主又不着急了,这可是我试验过的代码
游客

返回顶部