First off, thanks for taking the time to contribute! ❤️
HyperDbg is a large-scale project that requires a lot of time and effort from the community. Given the current number of developers and their limited time and resources, we cannot develop every part simultaneously. Therefore, new developers are warmly welcomed to join and add their contributions to the project. Here, we made a list of potential improvements that you can contribute on. Feel free to open up an issue if you think you have any ideas that would make a good addition to the list.
Please make sure to create a discussion or an issue, or even better, join the HyperDbg groups (Telegram, Discord, Matrix) on social media. Discuss the way you want to implement your changes and inform developers, because we often see people simultaneously working on the same issue. To avoid this collision, make sure to inform us before you start developing.
-
Writing blog posts and creating videos about use-cases of HyperDbg (make sure to add it to the awesome repository).
-
Fixing unresolved GitHub issues.
-
Troubleshooting problems with running on Hyper-V's nested virtualization.
-
Troubleshooting problems with running on VirtualBox's nested virtualization.
-
Supporting KDNET (sending data over the network).
-
Enhancing HyperDbg's Transparent Mode. These features should be added as an extension to the HyperEvade project (e.g., by bypassing al-khaser and similar anti-debugging and anti-hypervisor projects).
-
Enhancing and adding more features to the '.pe' command.
-
Adding HyperDbg to the system startup using UEFI.
-
Adding routines to activate and use Last Branch Record (LBR) and Branch Trace Store (BTS) | (In progress).
-
Creating a QT-based GUI.
-
Creating a SoftICE-style GUI.
-
Supporting nested-virtualization on HyperDbg itself.
-
Protecting HyperDbg code and memory from modification using VT-x capabilities.
-
Adding support for the Intel Processor Trace (PT) and event command for detecting coverage.
-
Creating a wrapper that automatically interprets the HyperDbg SDK to GO, RUST, C#, Python, etc.
-
Creating syntax highlighting for dslang for different IDEs (VSCode, VIM, etc.).
-
Building HyperDbg using LLVM clang.
-
Helping us start supporting HyperDbg on Linux (discussion needed).
-
Helping us start supporting HyperDbg on AMD processors (discussion needed).
-
Adding digital (FPGA) modules to the hwdbg hardware debugger.
-
Creating a ret-sync module for HyperDbg.
-
Adding fuzzing capabilities to HyperDbg (maybe integrating AFL++ into HyperDbg).
-
Working on live memory migration and adding support for kernel-mode time travel debugging.
-
Integrating the z3 project into HyperDbg and adding commands based on the z3 solver.
-
Adding the Bochs emulator to HyperDbg.
-
Creating different examples of how to use the SDK (using different programming languages).
-
Debugging and fixing bugs related to HyperDbg's physical serial communication.
-
Reading symbol information from modules in memory (currently, HyperDbg opens a file which continues the debugger).
-
Adding APIC virtualization.
-
Reading the list of modules for the 'lm' command directly from kernel-mode.
-
Detecting and fixing anti-hypervisor methods described here.
-
Investigating why the symbols parser (DIA SDK) could not read symbols of the 'kernel32!*'.
-
Creating the 'alias' command that converts or registers scripts as a command, for example: "alias !list .script list.dbg" (discussion needed).
-
Adding support for Hardware Performance Counters (HPC).
-
Any other interesting tasks you might find!
-
Creating commands to inspect and read details of PCIe devices.Added: [link][link] -
Mitigating the anti-hypervisor method described here.[Fixed] -
Fixing the problem with XSETBV instruction freezing.[Fixed]
This list will be updated frequently.
HyperDbg likely contains numerous bugs and may not have considered various scenarios that could lead to system crashes. We consistently invest a substantial amount of time in addressing these issues to improve the overall user experience with HyperDbg. Your assistance in identifying and fixing bugs would be greatly appreciated. Here's a glimpse into how HyperDbg developers allocate their daily time:
If you want to create a pull request please read coding-style, doxygen-style, and command-style in the case you want a new feature, or report a bug, please explain it in issues.
Here are some Frequently Asked Questions which may help with your moving process
Open a new GitHub pull request with the patch and also ensure the PR description clearly describes the problem and solution.
If you want to submit an enhancement or suggestion for HyperDbg, including completely new features and minor improvements to existing functionality please explain it in issues.
Suggest your change by opening an issue and start writing code.
Ask any question about HyperDbg by opening an issue.
Here's the overview of HyperDbg's source code, including the project's relations and dependencies.

