Skip to content

Latest commit

 

History

History
123 lines (88 loc) · 4.33 KB

README.md

File metadata and controls

123 lines (88 loc) · 4.33 KB

🌼 Magnolia

Magnolia is an open-source assembly program designed to be run as an Option ROM, giving users access to tools and games directly from a computer's BIOS.

Magnolia

Before you start

Compatibility notice

Please note that Magnolia has been specifically designed and developed for use with legacy BIOS and not UEFI. It is important to be aware that we have not tested Magnolia on UEFI systems, and there are currently no plans to support UEFI in the foreseeable future.

Disclaimer

Miralium Research, along with the authors and contributors of the Magnolia project, disclaim all liability for any damage, either direct or indirect, that may result from the use or misuse of this software. Users are solely responsible for their actions and assume all risks associated with the modification and usage of Magnolia within their system.

Motivation

At Miralium Research, we intend to use Magnolia as a platform for cybersecurity research by using it as a means to facilitate testing code on the context of a PC's firmware.

We invite and encourage the community to fork Magnolia and use it as a foundation for their own unique applications.

Features

The following features are available on the latest release of Magnolia.

Games

  • Floppy Bird: A clone of the Flappy Bird game, written in assembly by Mihail Szabolcs.

Tools

  • PC Speaker Test: Plays a simple tune through the onboard PC speaker.

Roadmap

Magnolia is under active development, and additional tools and games will be made available in future releases. Currently, our primary focus is on implementing the following features:

  1. Memory Dump: This feature will enable users to dump their PC's memory over a serial cable. It is likely to be based on mdump, a tool by Davidson Francis.

  2. Dynamic Loader: We are working on developing a tool that allows users to load and run code through a serial cable. This feature could make it more convenient and efficient to test custom code within the BIOS environment, since it reduces the need for reflashing the EEPROM for validating code on real hardware.

Running

To run Magnolia, you will need to either assembly its binary file from the source code within this repository by running the build.py script or download a pre-assembled version from the releases page. The binary should be loaded into a system as an Option ROM.

On some cases, it may be required to modify the PCI-related values on the build.yml file in order to build a customized version for a specific system.

Using QEMU

To load an Option ROM in QEMU, simply specify the path to the image using the -option-rom command line option. For example, after running the build.py script, you can run the following command from the root of this repository:

qemu-system-i386 -option-rom ./bin/magnolia.bin

Alternatively, qemu-system-x86_64 can be used. It does not really make a difference in this case, since Magnolia and its modules run entirely in 16 bit real mode.

Using real hardware

Detailed instructions on loading Magnolia as an Option ROM into real hardare are currently not covered by this README. It is expected that users attempting this have a solid understanding of the processes involved and are well-aware of the risks associated with modding and reflashing BIOSes and/or ROMs.

License

Magnolia's original source code is released under The Unlicense, granting permission for unlimited use, modification and distribution. However, please note that some of the included source code files are released under different licenses.

See the LICENSE.txt file for more information.

Support

If you have any issues or questions, please submit an issue on the GitHub repository, and we will get back to you as soon as possible.