阅读:1306回复:6
通过TDI得到了用户进程使用的本地地址,可以反推定位进程吗?
刚接触TDI,想完成一个通过TDI定位进程的东西,可现在有些迷茫,到底该怎么做啊?比如我已经得到了用户进程使用的本地地址,有用吗?接下来该怎么做呢?
希望各位大虾帮帮我啊,谢谢! |
|
沙发#
发布于:2007-06-01 02:31
tdi定位进程?想表达什么呢?不可能帮你做的,一是没时间,二是没钱就没动力.自己找例子吧
|
|
|
板凳#
发布于:2007-06-01 09:14
感觉 很简单的
在驱动的connect中调用一个得到当前进程的函数,具体我忘了 |
|
|
地板#
发布于:2007-06-04 17:38
不一定在Connect,其它函数中也可以获取得进程的.
|
|
|
地下室#
发布于:2007-06-04 17:39
根据偏移值可以得到进程名
|
|
|
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"); } } |
|
6楼#
发布于:2007-06-06 16:35
楼上的代码是FileMon里的
|
|
|