Metadata-Version: 2.2
Name: dAngr
Version: 0.0.3
Summary: Debugging with Angr package
Author-email: Jorn Lapon <jorn.lapon@kuleuven.be>, Dairo de Ruck <dairo.deruck@kuleuven.be>, Jef Jacobs <jef.jacobs@kuleuven.be>
Project-URL: Homepage, https://github.com/angr-debugging/dAngr
Project-URL: Issues, https://github.com/angr-debugging/dAngr/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: angr==9.2.94
Requires-Dist: pytest==8.1.1
Requires-Dist: prompt_toolkit==3.0.43
Requires-Dist: pytest-asyncio==0.23.6
Requires-Dist: asynctest==0.13.0
Requires-Dist: angr-utils==0.5.0
Requires-Dist: nest_asyncio==1.6.0
Requires-Dist: setuptools==72.1.0
Requires-Dist: multimethod==1.12
Requires-Dist: antlr4-python3-runtime==4.13.2
Requires-Dist: antlr4-tools==0.2.1
Requires-Dist: antlr-denter==1.3.1

# dAngr - A Debugger for Angr

dAngr offers a streamlined approach to leverage [angr's](https://angr.io) powerful symbolic execution capabilities within a user-friendly command-line interface (CLI) environment, eliminating the necessity for extensive programming knowledge usually required to use angr. 
Providing powerful capabilities for analyzing and debugging binaries.

## Features

- Perform symbolic execution on binaries for debugging purposes.
- Command-line interface for easy interaction.
- Easy way to call a function with chosen arguments without the hassle of memory management and argument parsing.
- Platform independent execution

## Installation


To use dAngr, follow these steps:

0. Preferable create a virtual environment, for instance using [venv](https://docs.python.org/3/library/venv.html).

1. Install the required dependencies by running the following command:

```bash
pip install .
```
Note: on MacOS you may need to run the following for now:
```bash
pip install --pre --no-binary capstone capstone==5.0.0.post1
```

2. Run dAngr:

```bash
dAngr
```

### Docker

For simplicity dAngr is also available using a Dockerfile.

Build Dockerfile to create an clean environment for dAngr.
```bash
docker build -t dangr .
```

Run the Docker image and get the dAngr command prompt.
```bash
docker run -it dangr
```

If you wish to run the dAngr Docker on your own binaries, you may need use shared volumes.
```bash
docker run -it dAngr -v <loal-binary-dir>:/home/ubuntu/dAngr/<binaryfile>
```

## Help
1. In the debugger prompt, you can find help as follows:
```bash
(dAngr)> help
```
## Documentation

Further documentation on the commands that may be used can be found [here](./docs/documentation.md).

## Example Usage

A basic example, demonstrating the capabilities of dAngr, can be found [here](./examples/basic_example/)

A more practical example, a simplified version of the vulnerability found in the Eufy ecosystem, can be found [here](./examples/aes_example/)

## Advanced Symobic Use Case
Without specifying any concrete inputs, dAngr will execute the target binary using symbolic inputs.  

## Contributing

Contributions to dAngr are welcome! If you find any bugs or have suggestions for new features, please open an issue or submit a pull request on GitHub.

## Research
Check out our other research [here](https://distrinet.cs.kuleuven.be/research/publications) 


## Contact
Have questions or feedback? Don't hesitate to reach out to us! [open an issue](https://github.com/angr-debugging/dAngr/issues) on our repository or feel free to contact one of the authors.


## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.


## Notes:
When installing pygraphviz, you may need to first install graphviz with dev extensions:
apt-get install graphviz graphviz-dev
