Welcome to x64dbg! This document is relevant for you if you want to contribute to the project. If you just want to use x64dbg, go to the website instead.
This is a list of things you can do to help us out (in no particular order). Each item will be expanded upon later in the document.
- Compile x64dbg and add new features (easy issues are a good place to start).
- Report bugs at the issue tracker.
- Add feature requests to the issue tracker.
- Write a blogpost for the official blog.
- Contact us and talk about x64dbg.
- Send a donation to support the project.
- Translate x64dbg (contact us if your language isn't listed).
- Help us improve the documentation.
There is a guide to compiling the whole project available. This might seem difficult at first, but if you install the correct versions of the Prerequisites it will be a breeze.
Compiling x64dbg is very useful to us (even if you don't add any code). Your experience can improve this guide and help new contributors.
Getting started with development
As with any open source project, documentation is lacking and the code can seem very daunting at first. Here is a list of resources that can help you understand the architecture and get you started.
- Architecture of x64dbg (must read)
- The x64dbg threading model (must read)
- User interface design principles blog post. It explains some of the design philosophy.
- Control flow graph blog post. The post links to the relevant code sections.
- Blog post about the plugin SDK. Writing an x64dbg plugin can also help you understand the code structure.
This is by no means an exhaustive list and we are still working on lowering the barrier for new contributors. The feedback of new contributors is vital to reaching this goal.
Sending a pull request
Here is a little guide on how to do a clean pull request for people who don't yet know how to use git. We recommend using Git Extensions, but any git interface is fine.
- First we need to fork the actual x64dbg repo on our github account.
- When the fork is finished, clone the repo (
git clone https://github.com/myname/x64dbg.git).
- When pushing new features/bug/whatever to a github project the best practice is to create branches. The command
git checkout -b my-branch-namewill automatically create a branch and check it out.
- Make all the changes you want and when finishing it, use
git add myfilesto add it to the repo.
- Commit your change.
git commit -m 'a message about what you changed'. The change are applied to your local git repo.
- Push it to your
originis your repo which is hosted on github.
git push --set-upstream origin your-branch-name.
- Sync with the
upstreamrepo, the real x64dbg repo.
git remote add upstream https://github.com/x64dbg/x64dbg.git, using
git remote -vwill show which origin/upstream are setup in the local repo.
- Sync your fork with the
git fetch upstream. Now checkout in the master again
git checkout masterand merge the upstream
git merge upstream/master.
- Time to create the pull request! Using the github ui, go to your account/repo, select the branch you already pushed, and click
Pull request. Review your pull request and send it.
If you want to have the highest chance of getting your problem solved, you are going to have to put in some effort. The vital things are:
- Search the issue tracker to see if your bug has not been reported already.
- Give concrete steps on how to reproduce your bug.
- Tell us exactly which version of x64dbg you used and the environment(s) you reproduced the bug in.
You can take a look at the issue template for more details.
Feature requests are often closed because they are out of scope. If you request one anyway, make sure to give a clear description of the desired behaviour and give clear examples of cases where your feature would be useful.
We understand that it can be disappointing to not get your feature implemented, but opening an issue is the best way to communicate it regardless.
Write a blogpost
The x64dbg blog is open to all contributors (foreign and domestic). We encourage anyone who has an interesting encounter with the x64dbg code base, or a use case to share it with the community. For a guideline on how/what to contribute see the blog post about contributing to the blog. Don't worry about contributing complex posts, we welcome ALL experience levels to add content to the blog!
There are several ways to reach out to the community of x64dbg developers, contributors and users. Chat channels consist of a Telegram, Gitter and IRC channel. Most questions regarding contributing, developing and using x64dbg can be answered here. To ensure channel cohesion a bot will sync messages across all three channels. (when it is not down ;))
To help translate x64dbg, just head over to http://translate.x64dbg.com, click a language you want to translate and start filling in entries.
Improve the documentation
If you see any room for improvement in the documentation, just send a pull request or contact us to discuss your changes.