Thank you for your interest in GhostRing. Contributions are welcome.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-change - Make your changes
- Run the tests:
cd tests && make run - Submit a pull request
- C99, freestanding (no stdlib in
src/) - 4-space indentation, no tabs
- Function names:
gr_subsystem_action()(e.g.,gr_vmx_setup_vmcs()) - Constants:
UPPER_SNAKE_CASE - Types:
gr_type_name_t - Every file starts with the license header
- Comments explain why, not what
- Reference Intel SDM / AMD APM section numbers for VMX/SVM code
src/common/— no OS-specific code, no#include <linux/...>src/vmx/— Intel VT-x onlysrc/svm/— AMD-V onlysrc/monitor/— architecture-independent security logicloader/— OS-specific code (Linux kmod, Windows KMDF, UEFI)- Platform abstraction via
platform.hcallbacks
- Unit tests in
tests/run in userspace (no VT-x needed) - Integration tests require QEMU with nested VT-x or bare metal
- All PRs must pass
make -C tests runbefore merge
- AMD-V testing on real hardware (Zen 3/4/5)
- Windows driver testing and WHQL preparation
- UEFI loader development (EDK2)
- Additional detection modules for the monitor
- Documentation and tutorials
- Performance benchmarking
If you find a security vulnerability, please email bauratynov@gmail.com directly instead of opening a public issue.
By contributing, you agree that your contributions will be licensed under the license that applies to the directory you are modifying:
- Apache-2.0 for
src/,agent/,tests/,loader/windows/,loader/uefi/ - GPL-2.0-only for
loader/linux/(required by the Linux kernel)
See the project LICENSE index for the full per-subsystem map.
New files must carry an SPDX-License-Identifier header matching their
subsystem.