Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Machine Learning to Deobfuscate Binaries
| Date | Stars |
|---|---|
| 2026-07-31 | 455 |
| 2026-08-05 | 455 |
| 2026-08-06 | 455 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
DEBIN <a href="https://www.sri.inf.ethz.ch/"><img width="100" alt="portfolio_view" align="right" src="http://safeai.ethz.ch/img/sri-logo.svg"></a>
=============================================================================================================
DEBIN is a system that uses machine learning to recover debug information (e.g., names and types) of stripped binaries (x86, x64, ARM). DEBIN is developed at [SRI Lab, Department of Computer Science, ETH Zurich](https://www.sri.inf.ethz.ch/) as part of the [Machine Learning for Programming](https://www.sri.inf.ethz.ch/research/plml) project.
It is able to distinguish register-allocated and memory-allocated variables with decision-tree-based classification. Moreover, it is capable of predicting meaningful names and types for variables and functions through structured prediction with probabilistic graphical models (with [Nice2Predict](https://github.com/eth-sri/Nice2Predict)). These models are learned from thousands of non-stripped binary in open source packages. For mode details, please refer to [DEBIN CCS'18 paper](https://files.sri.inf.ethz.ch/website/papers/ccs18-debin.pdf) and [slides](https://files.sri.inf.ethz.ch/website/slides/ccs18-debin-slides.pdf).
## Setup
### Docker
We provide a docker file, which we recommend to start with. To build and run:
```
$ docker build -t debin .
$ docker run -it debin
```
### Manually
We provide scripts to setup DEBIN manually. The scripts are only tested on `Ubuntu 16.04` with `gcc 5.4.0`):
```
$ ./install_dependencies.sh # uses apt-get and requires sudo privileges
$ ./setup.sh
```
For other platforms, please follow the steps below to setup DEBIN locally:
1. Install [Nice2Predict](https://github.com/eth-sri/Nice2Predict) (according to the instructions in the link)
2. Install [BAP](https://github.com/BinaryAnalysisPlatform/bap/) (according to the instructions in the link)
3. Install python3 dependencies:
```
$ pip3 install -r requirements.txt
```
4. Compile and install the BAP plugin that DEBIN uses:
```
$ cd ocaml
$ bapbuild -pkg yojson loc.plugin
$ bapbundle install loc.plugin
$ cd ..
```
5. Compile the shared library used to produce output:
```
$ cd cpp
$ g++ -c -fPIC modify_elf.cpp -o modify_elf.o -I./
$ g++ modify_elf.o -shared -o modify_elf.so
$ cd ..
```
## Usage
You can run the following commands to train or test DEBIN, either in docker or locally.
### Training
To use DEBIN, one needs to train models with a list of binaries and their debug information. We provide models trained with thousands of binaries for different architectures (x86, x64 and ARM). They can be downloaded through [this link](https://files.sri.inf.ethz.ch/debin_models.tar.gz) or using the following commands:
```
$ wget https://files.sri.inf.ethz.ch/debin_models.tar.gz
$ tar -zxvf debin_models.tar.gz
$ mv crf/ models/
$ mv variable/ models/
$ rm debin_models.tar.gz
```
You can also train your own models. Here are the example commands to train the variable classification models and the CRF models using a single sample binary:
```
$ mkdir -p new_models/variable/x86
$ python3 py/train_variable.py \
--bin_list examples/bin_list.txt \
--bin_dir examples/stripped/ \
--debug_dir examples/debug/ \
--out_model new_models/variable/x86/ \
--reg_num_f 100 \
--off_num_f 100
$ mkdir -p new_models/crf/x86
$ python3 py/train_crf.py \
--bin_list examples/bin_list.txt \
--bin_dir examples/stripped/ \
--debug_dir examples/debug/ \
--out_model new_models/crf/x86/model \
--n2p_train Nice2Predict/bazel-bin/n2p/training/train_json \
--log_dir new_models/crf \
--valid_labels c_valid_labels
```
The processes take less than a minute and the trained models are produced in `./new_models`. Note that binaires in directory specified by argument `--bin_dir` should have a symbol table (i.e., `.symtab` section) so that correct function boundaries are useExcerpt of 7,925 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:53e153164827ec9f, llm:Description: 'Machine Learning to Deobfuscate Binaries' (repo description)
matched fp:53e153164827ec9f, llm:Description: 'Machine Learning to Deobfuscate Binaries' (repo description)