네, 알고, 거기에 주변 일부 유사한 질문이 있습니다,하지만 그들 중 누구도15
나는 그것이 바보 같은 생각 것을 알고을 만족하지 않습니다,하지만 난 필요 것을 내 Visual Studio 2015 C++ - Project에서 커널 모드 (일명 Ring 0)를 입력하십시오.
최소한의 노력으로도이 작업을 수행하고 싶습니다. (특히 테스트를 위해 드라이버를 만들지 않고 모든 빌드 후에 서명하고 재배포해야하는 것은 매우 지루합니다).
어떻게하면됩니까?
프로젝트가 내 호스트 컴퓨터 또는 원격 컴퓨터 (또는 가상 컴퓨터)에서 실행되는지 여부는 중요하지 않습니다. 처분 할만큼 충분한 기계가 있습니다.
배경 : 현재 Cosmos operating system에서 작업 중이며 Ring 0 "특권"이 필요한 X86 어셈블리 명령어를 테스트해야합니다.
0xC0000096: Privileged instruction.
- 오류로 8 줄에 중단됩니다 다음 코드를 실행 rdmsr
, out
, in
등 :
int* ptr = new int[4];
int* va = ptr;
__asm
{
lea esi, va
mov ecx, 0xe7
rdmsr //error, as this must run in ring0
mov [esi + 4], eax
mov [esi], edx
mov ecx, 0xe8
rdmsr
mov [esi + 12], eax
mov [esi + 8], edx
xor eax, eax
}
....
그리고 그래, 내가 복용하고 위험을 충분히 알고 그래서 그런 일을 할 필요가 있는지, 왜 내가 프로그래머의 다윈 상을 얻으려고하는지 물어 보지 마십시오.)
장치 드라이버를 사용하지 않고 링 0을 입력 할 수 있으면 운영 체제에 고정해야 할 주요 보안 구멍이 있습니다. – jcoder
@jcoder : 아주 좋은 지적입니다. 그러나 장치 드라이버를 작성하고 배포하는 데 따르는 문제는 피하고 싶습니다.) – Unknown6656
링 0에 들어가고 코드가 전달 된 드라이버를 작성할 수 있습니다. 매우 안전하지는 않지만 드라이버를 한 번만 설치하면됩니다. – jcoder