能力值:
( LV3,RANK:20 )
|
-
-
2 楼
Eprocess结构里面有完整的路径
内核加个dpc定时器取路径来更新。
pe文件加载并运行内存中可改名的话,则它要先断开引用的自身磁盘文件对象。
内核取进程全路径,也许楼主用的到。主要是文件对象获取。
这是以前写的老代码。或许可以优化下。
通过挂钩ntcreateprocessex函数获取进程路径。createfile和open file没试过。不知可行与否。
这是windows xp 32bit sp3。
反汇编ntcreateprocessex函数。可看到如下代码。
mov ebx,[ebp+1ch] //父进程ID
此处ebx需要转换为handle数据类型。
ns = ObReferenceObjectByHandle( ebx,0, NULL, KernelMode, &pKey, NULL );
pFile = (PFILE_OBJECT)*(ULONG*)( ( char* )pKey + 20 );
pFile = (PFILE_OBJECT)*(ULONG*)( ( char* )pFile );
pFile = (PFILE_OBJECT)*(ULONG*)( ( char* )pFile + 36 );
RtlVolumeDeviceToDosName( pFile->DeviceObject, &usDosName );
RtlCopyUnicodeString( &usFullName, &usDosName );
ExFreePool( usDosName.Buffer );
RtlAppendUnicodeStringToString( &usFullName, &(pFile->FileName) );
RtlUnicodeStringToAnsiString( &akeyname, &usFullName, TRUE );
参数akeyname就是全路径。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
是这个路径么?
Process->SeAuditProcessCreationInfo.ImageFileName
SeLocateProcessImageName 这个API就是靠获取EPROCESS的结构得到的路径,但是获取不到镜像改名后的路径
|
能力值:
( LV4,RANK:40 )
|
-
-
4 楼
我有个很蠢的办法.....R0取个大概...R3匹配就是了....
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
这个,没有办法的办法的了
不过绕了一大圈,进程多的时候,会不会出现效率问题?
|
能力值:
( LV9,RANK:175 )
|
-
-
6 楼
http://bbs.pediy.com/showthread.php?t=96427
应该满足你了吧
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
看看学学
|
能力值:
( LV12,RANK:210 )
|
-
-
8 楼
一个ring3的API都可以获取到改名后的文件名:
GetMappedFileName
楼主试一下
|
|
|