Виртуална машина
Виртуалната машина (на английски: virtual machine) представлява софтуерна среда, абстракция на интерфейса на компютърен процесор.
Тъй като всеки тип процесор има собствен набор от команди и писането на машинен език в последните десетилетия се извършва от езици от високо ниво, похватът за създаването на една и съща виртуална машина, която да предоставя един и същ интерфейс за програмния език, е технически много добре обоснован.
Виртуалната машина предоставя следните преимущества на разработчиците на софтуер:
- Лесна преносимост между различни платформи – т.е. софтуерът бива написван един път на една платформа и работи безпроблемно на друга платформа (на практика това твърдение често е трудно изпълнимо за особено сложни програми).
Известни програмни езици, които използват виртуални машини, са Java и Perl.
Обфускация на машинен код
[редактиране | редактиране на кода]Съществува и друг тип виртуална машина, такава, чиято цел е да затрудни обратното инженерство на дадена програма, като преобразува даден машинен код в друг такъв, който се интерпретира (изпълнява) от виртуалната машина, като тя самата се изпълнява от програмата. Тъй като този процесор (интерпретатор) е виртуален, той може да е напълно различен като архитектура от разработените дотогава физически такива. Различните наименования са: Code Obfuscation Virtual Machine, Virtualization Obfuscation, Process Virtual Machines.
Най-често такъв тип виртуални машини се ползват от зловредни програми, за да затруднят разбирането на функцията на зловредния код. Те също се ползват легитимно и в комерсиалната среда от разработчици на компютърни игри и програми, за да се предотврати нелегалното им разпространение (crack).
За по-голяма сложност, има виртуални машини, които изпълняват друга виртуална машина, която изпълнява (интерпретира) някакъв код. Не е задължително двете виртуални машини да са с една и съща архитектура.
Софтуерни виртуални машини
[редактиране | редактиране на кода]- Common Language Runtime – общата виртуална машина за следните езици C#, Visual Basic .NET, J#, Managed C++ на Microsoft
- JVM – виртуалната машина на програмния език Java
- Виртуалната машина на Perl – Perl
- Parrot
- VMProtect – виртуализира x86/x64 машинен код в друг такъв, с уникална архитектура всеки път.
- Armadillo – protector, включващ в арсенала си виртуална машина.[1]
- SecuROM – protector, включващ в арсенала си виртуална машина. Ползва се най-често при компютърни игри.
- Themida – protector, включващ в арсенала си виртуална машина.
Вижте също
[редактиране | редактиране на кода]Източници
[редактиране | редактиране на кода]- ↑ Главчев, Александър. Google започна да разпространява новата си операционна система Fuchsia // digitalk.bg, 19.08.2022. Посетен на 20.07.2022.