2009-07-16 3 views
5

Windows NT 플랫폼 (XP-W7)의 커널 모드에서 사용자 모드 프로세스를 만드는 방법이 있습니까?드라이버에서 프로세스 만들기

편집 : 드라이버 만 설치해야합니다. 이것은 프로젝트의 특정 사항입니다.

+0

드라이버에서 일부 사용자 proceess에 대한 내 자신의 사용자 모드 코드로 스레드를 주입하는 것에 대해 생각하고 있습니다 ... –

+0

http://www.codeproject.com/KB/system/KernelExec.aspx를 확인하십시오. 흥미로운 ... –

답변

5

유효한 win32 프로세스를 만들려면 드라이버가 CSRSS (완전히 문서화되지 않은 것)와 통신해야합니다. 따라서 사용자 모드 APC를 대기시키고 기존 Win32 프로세스의 컨텍스트에서 APC 코드에 가상 메모리를 할당하여 종료했습니다.이 코드는 CreateProcess를 호출하고 작업을 수행합니다.

까다로운 방법이지만 효과가 있습니다.

2

나는 이것을 쉽게 달성 할 수있는 방법을 모른다. 그러나 중복 된 DeviceIoControl을 드라이버에 적용하는 Windows 서비스를 실행하는 것은 어떻습니까? 그 대가로 서비스는 드라이버로부터받은 데이터를 검사하고 해당 애플리케이션을 시작할 수 있습니다.

+1

나는 이것이 올바른 해결책이라고 말할 것입니다. 서비스에서 역방향 IRP를 실행하고 시작하기 위해 사용자 모드 프로세스가 필요할 때 드라이버가 완료되도록하십시오. –

+0

제안에 감사드립니다. 그러나 서비스가 실행되고있을 수 없습니다 (서비스 만 커널 모드에서 설치하고 시작하는 경우). –

+0

@Sergius : 어쨌든 드라이버를 설치해야합니다. 동일한 INF 파일을 사용하여 서비스를 설치할 수 있습니다. –

0

이 작업은 직접 수행 할 수 없습니다. Win32 프로세스를 만들려면 커널 모드에서 프로세스 개체를 만드는 것뿐만 아니라 CreateProcess의 사용자 모드 부분에서 일부 설정 작업이 필요합니다.

사용자 모드 응용 프로그램을 시작하려면 서비스, 데스크톱 응용 프로그램 등 사용자 모드 코드가 필요합니다.

관련 문제