Виртуална машина

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Виртуалната машина представлява софтуерна среда, абстракция на интерфейса на компютърен процесор.

Тъй като всеки тип процесор има собствен набор от команди и писането на машинен език в последните десетилетия се извършва от езици от горно ниво, похватът за създаването на една и съща виртуална машина, която да предоставя един и същ интерфейс за програмния език, е технически много добре обоснован.

Виртуалната машина предоставя следните преимущества на разработчиците на софтуер:

  • лесна преносимост между различни платформи — т.е. софтуерът бива написван един път на една платформа и работи безпроблемно на друга платформа (на практика това твърдение често е трудно изпълнимо за особено сложни програми)

Известни програмни езици, които използват виртуални машини, са Java Perl

Обфускация на машинен код[редактиране | edit source]

Съществува и друг тип виртуална машина, такава, чиято цел е да затрудни обратното инженерство на дадена програма, като преобразува даден машинен код в друг такъв, който се интерпретира(изпълнява) от виртуалната машина, като тя самата се изпълнява от програмата. Тъй като този процесор(интерпретатор) е виртуален, той може да е напълно различен като архитектура от разработените досега физически такива. Различните наименования са: Code Obfuscation Virtual Machine, Virtualization Obfuscation, Process Virtual Machines.

Най-често такъв тип виртуални машини се ползват от зловредни програми, за да затруднят разбирането на функцията на зловредния код. Но също се ползват легитимно и в комерсиалната среда от разработчици на компютърни игри и програми, за да се предотврати нелегалното им разпространение(крак/crack).

За по-голяма сложност, има виртуални машини, които изпълняват друга виртуална машина, която тя самата изпълнява(интерпретира) някакъв код. Двете виртуални машини не е задължително да са от една и съща архитектура.

Софтуерни виртуални машини[редактиране | edit source]

  • Common Language Runtime - общата виртуална машина за следните езици C#, Visual Basic .NET, J#, Managed C++ на Microsoft
  • JVM— виртуалната машина на програмния език Java
  • Виртуалната машина на Perl - Perl
  • Parrot
  • VMProtect - виртуализира x86/x64 машинен код в друг такъв, с уникална архитектура всеки път.
  • Armadillo - protector, включващ в арсенала си виртуална машина.
  • SecuROM - protector, включващ в арсенала си виртуална машина. Ползва се най-често при компютърни игри.
  • Themida - protector, включващ в арсенала си виртуална машина.

Вижте също[редактиране | edit source]