Skip to content

Commit

Permalink
Update README
Browse files Browse the repository at this point in the history
  • Loading branch information
mahaloz committed Jun 24, 2024
1 parent dce608f commit 7c93662
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 7 deletions.
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,25 @@
# DAILA
The Decompiler Artificial Intelligence Language Assistant (DAILA) is a unified interface for AI systems to be used in decompilers.
Using DAILA, you can utilize various AI systems, like local and remote LLMs, all in the same scripting and GUI interfaces.
Using DAILA, you can utilize various AI systems, like local and remote LLMs, all in the same scripting and GUI interfaces across many decompilers.
DAILA was featured in the keynote talk at [HITCON CMT 2023](https://hitcon.org/2023/CMT/en/).

![](./assets/ida_daila.png)

DAILA provides a lifted interface, relying on the BinSync library [LibBS](https://github.com/binsync/libbs) to abstract away the decompiler.
**All decompilers supported in LibBS are supported in DAILA, which currently includes IDA, Ghidra, Binja, and angr-management.**
Currently, there are two AI systems supported in DAILA: [OpenAI](https://openai.com/) and [VarBERT](https://github.com/binsync/varbert_api),
the latter of which is a local model for renaming variables in decompilation published in S&P 2024.
If you are looking for a demo of DAILA, please see the [Demo](#demo) section.
## Supported Decompilers and AI Systems
DAILA interacts with the decompiler abstractly through the [LibBS](https://github.com/binsync/libbs) library.
This allows DAILA to support the following decompilers:
- IDA Pro: **>= 7.3**
- Ghidra: **>= 10.1**
- Binary Ninja: **>= 2.4**
- angr-management: **>= 9.0**

DAILA supports any LLM supported in [LiteLLM](https://github.com/BerriAI/litellm), such as:
- ChatGPT
- Claude
- Llama2
- and more...

DAILA also supports local models of different types, like [VarBERT](https://github.com/binsync/varbert_api), a local model for renaming variables in decompilation published in S&P 2024.

## Installation
Install our library backend through pip and our decompiler plugin through our installer:
Expand Down
Binary file modified assets/ida_daila.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@


class TestCommandline(unittest.TestCase):
def test_change_watcher_plugin_cli(self):
def test_cli(self):
# run the CLI version check
output = subprocess.run(["daila", "--version"], capture_output=True)
version = output.stdout.decode().strip()
assert version == dailalib.__version__

def test_resources_exist(self):
from dailalib.api.litellm.prompts import PROMPTS
assert len(PROMPTS) > 0


if __name__ == "__main__":
unittest.main(argv=sys.argv)

0 comments on commit 7c93662

Please sign in to comment.