Binary Ninja¶
Open Source¶
Vector 35 is grateful for the following open source packages that are used in Binary Ninja directly or indirectly:
- Documentation
- breathe-rtd-theme (breathe-rtd-theme license - MIT)
- breathe (breathe license - BSD)
- doxygen (doxygen license - GPLv2)
- mkdocs-material (mkdocs-material License - BSD)
- mkdocs (mkdocs license - BSD)
- sphinx (sphinx license - BSD and others)
The previous tools are used in the generation of our documentation, but are not distributed themselves and are merely listed here in acknowledgement for the value they provide.
-
UI
- dejavusanscode (dejavusanscode license - multiple open licenses)
- opensans (opensans license - Apache 2.0)
- qt (qt license - LGPLv3 / note, please see our qt build instructions below)
- libxcb (libxcb license - MIT)
- sourcecodepro (sourcecodepro license - SIL open font license)
- rlcompleter (python license - Python Software Foundation License 2)
- QCheckboxCombo (QCheckboxCombo License - MIT)
- NotoColorEmoji (NotoColorEmoji License - SIL open font license)
-
Core
- abseil-cpp (abseil-cpp license - Apache 2.0)
- pulldown-cmark (pulldown-cmark license - MIT)
- jsoncpp (jsoncpp - Public Domain / MIT)
- llvm (llvm license - BSD-style)
- lzf (lzf license - BSD)
- python (python license - Python Software Foundation License 2 -- a Python 3.10 built without GPL components is currently shipped with Windows builds only, other platforms leverage existing Python installs)
- sqlite (sqlite license - public domain)
- zlib (zlib license - zlib license)
- rapidjson (rapidjson license - MIT)
- jemalloc (jemalloc license - 2-clause BSD)
- Rust (Rust license - MIT)
- curl-rust (curl-rust license - MIT)
- curl (curl license - MIT)
- nom (nom license - MIT)
- xxHash (xxHash License - 2-clause BSD)
- pdb (Rust crate) (pdb license - Apache 2.0 / MIT)
- botan (botan license - 2-clause BSD)
-
Other
- yasm (yasm license - 2-clause BSD) used for assembling x86 and x64
- xed (xed license - Apache License 2.0) used for disassembling x86, x64, and x16
- capstone (capstone license - 3-clause BSD) used in the PPC architecture module as an example of how to wrap an external disassembler
- flatbuffer (flatbuffer license - Apache License 2.0) used in the binary format for the function fingerprint libraries
- deprecation (deprecation license - Apache License 2.0) used in the Python API for marking deprecated functions/properties/classes
Building Qt¶
Binary Ninja uses Qt 6.4 under an LGPLv3 license which requires that we host the original sources used to build Qt for our application along with instructions on how that source may be re-built and can replace the version of Qt shipped with Binary Ninja.
Please note that we offer no support for running Binary Ninja with modified Qt libraries.
- Follow the installation requirements on the Building Qt 6 from Git page.
- Download the Qt 6.4.3 tarball from binary.ninja. The Qt code has a patch applied but is ABI compatible with the official Qt release.
- Next, build Qt with the qt-build repository. Alternatively, build Qt using the aforementioned instructions.
- On macOS, you will need to disable the code-signing signature since it would otherwise prevent changes to binaries or shared libraries.
- Finally, replace the built libraries:
- On macOS, replace the
QtCore.framework
,QtDBus.framework
,QtGui.framework
,QtNetwork.framework
,QtPrintSupport.framework
,QtWidgets.framework
folders inside of/Applications/Binary Ninja.app/Contents/Frameworks
- On Windows, replace the
Qt6Core.dll
,Qt6Gui.dll
,Qt6Network.dll
, andQt6Widgets.dll
files inC:\Program Files\Vector35\BinaryNinja\
. - On Linux, replace the
libQt6Core.so.6
,libQt6DBus.so.6
,libQt6Gui.so.6
,libQt6Network.so.6
,libQt6Widgets.so.6
,libQt6XcbQpa.so.6
files wherever Binary Ninja was extracted.
- On macOS, replace the