문제

official 는 방법을 결정하기 위해 응용 프로그램 실행 중인 경우에 VMWare 가상 PC(또는 무 Microsoft 부르고 그것을 지금)?코드 보았는 일반적으로 해킹을 이용했다 어떤 이상한 행동 측에서 효과의 특정 버전 VMWare 가상 PC.

이상적으로 델피 코드,하지만 당신에 연결할 수 있는 공식적인 설명 다음 확 변환 할 수 있습니다.

도움이 되었습니까?

해결책

작년에 소스 코드와 함께 일련의 기사를 썼습니다. VMware 및 와인 탐지입니다 여기. 가상 PC입니다 여기. 이 세 가지 모두 하이퍼 바이저에 문서화 된 콜백 (와인의 경우 표준 DLL로의 확장)이 있기 때문에 철저한 감지가 있습니다. 주석 섹션에 테스트 할 수없는 가상 박스 검출기 (테스트 할 설치되지 않음)를 설치했습니다. 콜백을 사용하여 Parallels가 감지 할 수 있지만 설치되지 않았습니다. 문서의 링크 (악용에 중점을 둔 보안 연구원에서 나온 이후 가난한 사람). 여기 설치하고 관심이있는 경우. ppt도 있습니다 여기 샌드 박스, Bochs 및 Xen을 감지하는 정보가 있습니다. 코드가 많지 않지만 코드를 감지 해야하는 경우 출발점을 줄 수 있습니다.

다른 팁

코드 프로젝트는 방법을 보여줍니다 프로그램이 가상 시스템 내에서 실행 중인지 감지 그것은 좋은 이해를 제공하기 위해 그것을 달성하는 방법에 대해 자세히 설명합니다.

이것에 대한 최선의 방법은 하드웨어 프로파일을 확인하는 것입니다. 가상화 된 하드웨어는 일반적으로 회사 이름의 일부를 사용합니다. 가상 PC에있는 동안 마더 보드 설명을 확인하면 "Microsoft Corporation"에 의해 만들어집니다. VMware에서 마찬가지로 이더넷 어댑터는 vmnet과 접두사가 있습니다.

이 스레드 Sysinternals 포럼에는 단일 ISVM 기능을 포함하여 몇 가지 답변 (물론 Delphi)이 있습니다. XP 및 Win2003에서 VMware의 XP 및 Vista에서 호스팅하여 좋은 결과를 얻었습니다.

가 WMI 방법으로 여기에 게시:http://blogs.msdn.com/virtual_pc_guy/archive/2005/10/27/484479.aspx

나중 검사에는 XP 이미지에서 실행되는 가상 PC,값들에 대한 테스트는 여전히 동일하다.나는 보장하지 않을 것입니다 무엇이 다른 Vm 을 반환 여기에,하지만...

I've actually got a Delphi 프로그램을 썼는데 몇 년 전의 목록을 변경하고 기본 프린터를 사용하여 필요로하지 않고 제 3 자 구성 요소나는 것 같습니다.경우에 당신과 함께 작업에 사용하지 않 WMI 델파이에서,나는 너를 보낼 수 있는 사본을 그래서 당신이 뭔가를 일(그것은 반드시는 유니코드 호환도 하지만,그것은 너무 나를 위해 열심히 그것을 업그레이드 할 필요가있는 경우).

나는 그것을 사용했다 redpill 방법 (델파이로 번역되었지만 코드는 이해하기 어렵지 않습니다)은 상당히 잘 작동했습니다. 또한 WMI 호출을 사용하여 네트워크 어댑터 공급 업체 이름 및 저작권과 같은 것들을 얻기 위해 몇 가지 추가 점검을 포함 시켰지만 이는 가상 PC의 특정 버전을 감지하기위한 것입니다.

Redpill 방법에 대한 나의 이해는 그것이 작동하는 방식의 특성에 따라 모든 가상 머신을 작동하고 감지해야한다는 것입니다. Windows 7의 Windows 기능 내의 새로운 Windows 기능이 Windows 7 내에서 Windows XP 사본에서 선택된 프로그램을 실행하도록 구성 될 수 있으므로 잘못된 양성이 생성 될 수있는 가능성이 있습니다.

모든 제조업체에 블록이 주어지고 처음 3 개의 부품은 고유 한 Mac 주소를 보는 데 행운을 빕니다.

//look at the MAC address and determine if it's a Virtual Machine
$temp = preg_split("/\s+/",exec("/sbin/ifconfig -a eth0 2>&1 | /bin/grep HWaddr"), -1, PREG_SPLIT_NO_EMPTY);
//Virtual Box MACs all start with '08:00:27:xx:xx:xx'
if (strpos($temp[4], '08:00:27') !== false) $_SESSION['DEVELOPMENT'] = true;  

기계가 물리적이거나 VM을 결정합니다

dmidecode | egrep -i 'manufacturer|product'

dmidecode 명령을 찾지 못한 경우 각 RPM을 설치하십시오.

이것은 Exsi, VMware 및 Hyperv 머신에서 테스트됩니다.

일반적으로 모든 유형의 가상화의 존재를 감지하려면 성능 특성을 분석하는 것이 가장 좋습니다. 가상화 (예 : 포크 폭탄과 같은 MMU 무거운 워크로드)에서 상당히 느려지는 것을 가져 와서 일반 CPU 바운드 사용자 공간 앱에 대해 시간을 보내십시오. 비율에서 쉽게 알 수 있습니다.

특정 VMM에만 관심이있는 경우 노력 측면에서 가장 쉬운 측면에서 하드웨어 (즉, VMware PCI 장치)를 찾는 것입니다.

00 : 07.3 교량 : Intel Corporation 82371AB/EB/MB PIIX4 ACPI (Rev 08) 서브 시스템 : VMware Inc Virtual Machine Chipset

15AD : 1976

공급 업체 가치는 '15AD'입니다.

다양한 VMM에서 다양한 버전으로 작동하는 특정 백도어 포트도 있습니다. SIDT 트릭도 좋지만 VMM이 코드를 확인하는 목록에 있지 않으면 어떻게해야합니까?

dmidecode -s system-product-name

VirtualBox에서 테스트 한 결과 :

Virtualbox
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top