DegateCommunity / Degate

A modern and open-source cross-platform software for chips reverse engineering.
https://www.degate.org
GNU General Public License v3.0
251 stars 31 forks source link
chips cpp cross-platform cybersecurity gui multi-platform reverse-engineering security security-tools verilog vhdl vlsi

DegateBanner

 

Degate is a multi-platform software for semi-automatic VLSI reverse engineering of digital logic in chips. This repository is a continuation of the original Degate project, with major changes and a new maintainer. For more please visit our wiki page and, if you want to chat, visit our Gitter. The current main maintainer of Degate is Dorian Bachelot.

 

 

The project

Little history

Degate was actively developed by Martin Schobert, during his thesis, from 2008 to 2011. From 2013 to 2018, the project was mainly inactive and only got some small fixes over the years. At this time, the project was composed of a library (libGate) and a GUI interface (Degate).

Degate has definitely a great potential, mainly because it is the only free and open-source software for hardware reverse engineering of chips, but never knew how to impose itself in the community. One possible reason for that is that Degate was known to be unstable and have impacting bugs in a first place.

You can browse the old Degate code here and the old repository here:

https://github.com/nitram2342/degate

Current status

This project replace the old Degate, with a focus on Windows, Linux and MacOS support, getting better stability and general modernization. To achieve this the first step was to drop GTK, move to Qt and merge the lib and the GUI part of the project. Another objective was to minimize the number of dependencies, for now it uses only Boost and Qt and the mid-term objective is to only keep Qt and remove Boost.

The stability was the main problem of the old Degate and the main reason why the community hadn't already united around it. Regarding that, we want to have fewer bugs as possible, even if some functionality needs to be dropped (for the moment).

For the moment we have (as functionalities):

We dropped those functionalities from old Degate:

A lot of bugs were fixed in this newer version, and it should be a better base to improve Degate even more in the future.

Future

There is still a lot to do in this new version, but all core functionalities (and even more) are implemented.

Future functionalities remaining to implement (not limited):

For a more precise roadmap see the ROADMAP.md file.

Documentation

The official Degate documentation is available here. It is still under construction.

Also, you can find here the official Degate wiki. For example, you can find on it a list of tutorials for Degate and for IC Reverse-Engineering.

Screenshots

Build

Dependencies

Degate has only 2 dependencies: Boost and Qt5.

For Boost, you can specify to CMake a custom path with: -DBOOST_ROOT="custom_path_to_boost". Prebuilt versions for Windows are available here: https://sourceforge.net/projects/boost/files/boost-binaries/.

For Qt5, you can specify to CMake a custom path with: -DCMAKE_PREFIX_PATH="custom_path_to_qt". For example, on Windows: Qt/VERSION/COMPILER/lib/cmake/Qt5. You can download Qt5 here: https://www.qt.io/download.

For Linux, don't forget to install the Qt5 add-on module: ImageFormats (you just need to have the package installed, it will be embedded in the Qt5::Core module after). See https://doc.qt.io/qt-5/qtimageformats-index.html. For example, on debian, the package is: qt5-image-formats-plugins. Same problem with linguist tools, for example for debian you need the package: qttools5-dev.

Dependencies version

Quick start

Firstly, clone this repository (help here).

For Linux (debian-like)

Install dependencies:

> sudo apt-get install cmake g++ qt5-default qt5-image-formats-plugins qttools5-dev libboost-all-dev

Build (in the 'build' folder, for example):

> cmake ..
> make

Binaries are in the 'build/out/bin' folder.

For Windows

Install dependencies:

Build (in the 'build' folder, for example):

> cmake .. -DBOOST_ROOT="path_to_boost" -DCMAKE_PREFIX_PATH="path_to_qt"
> cmake --build .

Binaries are in the 'build/out/bin' folder.

For MacOS

Install dependencies (we will use Homebrew here) :

> brew install boost
> brew install qt

Build (in the 'build' folder, for example):

> cmake ..
> cmake --build .

Binaries are in the 'build/out/bin' folder in the bundle ".app" format.

Troubleshooting

Demo projects

You can find demo projects here.

Contributing

Read the "CONTRIBUTING.md" file.

Localization

Help us

For now only English and French are supported, but if you wish you can help easily. Degate use Qt Linguist for translation, you can learn more here: https://doc.qt.io/qt-5/linguist-translators.html. You can find .ts files (to use with Qt Linguist) in 'res/languages'.

Languages:

To add a new language opens a new issue, or use our Crowdin project: https://crowdin.com/project/degate.

License

Degate is released under the GNU General Public License Version 3. See LICENSE.TXT for details.

The current main maintainer of Degate is Dorian Bachelot dev@dorianb.net and the original Degate maintainer is Martin Schobert martin@mailbeschleuniger.de.