pp1115
驱动牛犊
驱动牛犊
  • 注册日期2007-05-28
  • 最后登录2007-06-05
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1306回复:6

通过TDI得到了用户进程使用的本地地址,可以反推定位进程吗?

楼主#
更多 发布于:2007-05-31 22:03
刚接触TDI,想完成一个通过TDI定位进程的东西,可现在有些迷茫,到底该怎么做啊?比如我已经得到了用户进程使用的本地地址,有用吗?接下来该怎么做呢?
希望各位大虾帮帮我啊,谢谢!
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-06-01 02:31
tdi定位进程?想表达什么呢?不可能帮你做的,一是没时间,二是没钱就没动力.自己找例子吧
人不靓仔心灵美,版头不正红花仔!
aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2007-06-01 09:14
感觉 很简单的
在驱动的connect中调用一个得到当前进程的函数,具体我忘了
周维彬
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-06-04 17:38
不一定在Connect,其它函数中也可以获取得进程的.
人不靓仔心灵美,版头不正红花仔!
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2007-06-04 17:39
根据偏移值可以得到进程名
人不靓仔心灵美,版头不正红花仔!
jonah_zc
驱动牛犊
驱动牛犊
  • 注册日期2007-03-19
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望8点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-06-05 11:17
#define        PROCNAMELEN        20
#define        NT_PROCNAMELEN        16
#define        SYSNAME            "System"

/////////////////////////////////////////////////////////////////////////////
//// GetProcessNameOffset
//
// Purpose : Get The process Name Offset
//
// Parameters : VOID
//
// Return Value : VOID
//
// Remarks : Set offset to the global variable gProcessNameOffset
//
VOID GetProcessNameOffset()
{
    PEPROCESS    curProc;
    int i;

    curProc = PsGetCurrentProcess();
    for(i = 0; i < 3*PAGE_SIZE; i++)
    {
        if(!strncmp(SYSNAME, (PCHAR)curProc + i, strlen(SYSNAME)))
        {
            gProcessNameOffset = i;
        }
    }
}

/////////////////////////////////////////////////////////////////////////////
//// GetProcessName
//
// Purpose : Get the Process Name
//
// Parameters : PCHAR theName
//
// Return Value : VOID
//
// Remarks : If get the Process Name, set parameter, otherwise set "????"
//
VOID GetProcessName(PCHAR theName)
{
    PEPROCESS    curProc;
    char *nameptr;
    ULONG    i;
    KIRQL    oldirql;

    if(gProcessNameOffset)
    {
        curProc = PsGetCurrentProcess();
        nameptr = (PCHAR)curProc + gProcessNameOffset;
        strncpy(theName, nameptr, NT_PROCNAMELEN);
        theName[NT_PROCNAMELEN] = 0;
        DbgPrint("Get Process Name OK.\r\n");
    }
    else
    {
        strcpy(theName, "????");
        DbgPrint("Get Process Name Unknown ????.\r\n");
    }
}
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2007-06-06 16:35
楼上的代码是FileMon里的
人不靓仔心灵美,版头不正红花仔!
游客

返回顶部