{"id":13575227,"url":"https://github.com/tandasat/MiniVisorPkg","last_synced_at":"2025-04-04T19:31:26.218Z","repository":{"id":44543825,"uuid":"242410595","full_name":"tandasat/MiniVisorPkg","owner":"tandasat","description":"The research UEFI hypervisor that supports booting an operating system.","archived":false,"fork":false,"pushed_at":"2024-08-15T14:30:25.000Z","size":6371,"stargazers_count":597,"open_issues_count":3,"forks_count":88,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-04-04T10:09:48.459Z","etag":null,"topics":["hypervisor","kernel","uefi","vt-x"],"latest_commit_sha":null,"homepage":"https://standa-note.blogspot.com/2020/03/introduction-and-design-considerations.html","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tandasat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-22T20:56:32.000Z","updated_at":"2025-04-04T08:26:05.000Z","dependencies_parsed_at":"2024-11-05T10:59:07.539Z","dependency_job_id":null,"html_url":"https://github.com/tandasat/MiniVisorPkg","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2FMiniVisorPkg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2FMiniVisorPkg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2FMiniVisorPkg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2FMiniVisorPkg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tandasat","download_url":"https://codeload.github.com/tandasat/MiniVisorPkg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247237678,"owners_count":20906329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hypervisor","kernel","uefi","vt-x"],"created_at":"2024-08-01T15:00:59.195Z","updated_at":"2025-04-04T19:31:26.205Z","avatar_url":"https://github.com/tandasat.png","language":"C","funding_links":[],"categories":["Research Projects","C"],"sub_categories":["AMD"],"readme":"MiniVisor\n==========\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5781c969419c47059f1aba259443fe79)](https://www.codacy.com?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=tandasat/MiniVisorPkg\u0026amp;utm_campaign=Badge_Grade)\n\nThis is a research hypervisor written as a UEFI and Windows driver for the educational purpose for Intel processors.\n\nThis MiniVisor, as a UEFI driver, provides the ability to inspect system activities even before the operating system boots, while as a Windows driver, allows developers to debug it with familiar tools like WinDbg.\n\nShowcase\n---------\n\n* Loading the hypervisor from the UEFI shell.\n  ![Readme_Showcase1.jpg](Docs/Resources/Readme_Showcase1.jpg)\n\n* Logging boot activities and interacting with the guest.\n  ![Readme_Showcase2.jpg](Docs/Resources/Readme_Showcase2.jpg)\n\n* Booting Ubuntu on a bare-metal.\n  ![Readme_Showcase3.jpg](Docs/Resources/Readme_Showcase3.jpg)\n\nMotivation\n-----------\n\nThe goal of this project is to share an additional learning resource for writing UEFI hypervisors with the community and researchers.\n\nThere are numerous open source hypervisors with small and easy-to-study implementations, but those that support booting operating systems as UEFI drivers are still not many.\n\nGiven the universality of UEFI systems on the AMD64 ecosystem and the unique ability to monitor, attack and protect the system throughout operating system startup on bare-metal systems, the authors believe that having the understanding and being able to develop this type of hypervisors are valuable for research.\n\nSystem Requirements\n--------------------\n\nCommon Requirements:\n* Intel VT-x and EPT supported processors\n\nRequirements for the UEFI driver:\n* UEFI-based system\n* 64bit Windows 10, IoT Core, or Ubuntu to boot\n\nRequirements for the Windows driver:\n* 64bit Windows 10\n\nSee [Building and Debugging](Docs/Building_and_Debugging.md) for testing.\n\nAdvantages and Use Cases\n-------------------------\n\nWhile this project does not implement or designed for any immediately useful features, UEFI-based hypervisors have multiple advantages over Windows driver-based ones and can implement unique features.\n\n* No need of disabling Hyper-V (Virtualization Based Security) to run the custom hypervisor\n* No need of enabling the test-signing mode\n* Zero direct indicator of existence of the hypervisor from operating system perspective\n* Detecting bootkit and early system modification\n* Implementing operating system agnostic solutions\n* Installing hooks during the early boot phase and letting PatchGuard to protect them\n  ![Readme_Showcase4.jpg](Docs/Resources/Readme_Showcase4.jpg)\n\nAcknowledgments\n----------------\n\nThe authors thank for creators and maintainers of the following projects:\n* [Bareflank](https://github.com/Bareflank/hypervisor) and [STM](https://github.com/jyao1/STM) -- for publishing UEFI-base hypervisors with the relatively small codebase.\n* [zpp_hypervisor](https://github.com/eyalz800/zpp_hypervisor) -- for making me realize that writing UEFI-based hypervisors is viable.\n* [EfiGuard](https://github.com/Mattiwatti/EfiGuard) -- for clean codebase and rich documentation for UEFI development newbies.\n* [hvpp](https://github.com/wbenny/hvpp) -- for few techniques required for the UEFI environment.\n* [ia32-doc](https://github.com/wbenny/ia32-doc) -- for saving me from defining thousands of constants and structures by hand.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftandasat%2FMiniVisorPkg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftandasat%2FMiniVisorPkg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftandasat%2FMiniVisorPkg/lists"}