2007년 01월 31일
디바이스 드라이버에서 PID로 프로세스네임 얻어오기
VOID GetProcessNameOffset( void ) {
PEPROCESS curproc;
int i;
curproc = PsGetCurrentProcess();
for( i = 0; i < 3*PAGE_SIZE; i++ )
{
if( !strncmp( "System", (PCHAR)curproc + i, strlen("System") ))
{
gProcessNameOffset = i;
}
}STATUS_SUCCESS;
}
2.
NTKERNELAPI
NTSTATUS
PsLookupProcessByProcessId (
IN HANDLE ProcessId,
OUT PEPROCESS *Process
);
을 이용해서
PEPROCESS EPROC;
PsLookupProcessByProcessId(넘어온PID,&EPROC);
를 해주면 해당 PID의 EPROCESS를 알 수 있고,
3.
int GetProcessName( PEPROCESS EPROC,PCHAR theName )
{
PEPROCESS curproc;
char *nameptr;
if( gProcessNameOffset )
{
curproc = EPROC;
nameptr = (PCHAR) curproc + gProcessNameOffset;
strncpy( theName, nameptr, NT_PROCNAMELEN );
theName[NT_PROCNAMELEN] = 0; /* NULL at end */
return TRUE;
}
return FALSE;
}
# by | 2007/01/31 21:19 | Device Driver | 트랙백 | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]