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.
Despite being designed and developed specifically for use with legacy BIOS, Magnolia is UEFI compatible. Currently, UEFI can load and execute OpROM from legacy BIOS when the Compatibility Support Module (CSM) is enabled. There are no plans to support native UEFI in the near future.
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.
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.
The following features are available on the latest release of Magnolia.
-
Floppy Bird: A clone of the Flappy Bird game, written in assembly by Mihail Szabolcs.
-
Pillman: A clone of the Pac-Man game, written in assembly by nanochess.
- PC Speaker Test: Plays a simple tune through the onboard PC speaker.
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:
-
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.
-
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.
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.
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.
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.
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.
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.