https://github.com/Washi1337/Echo
Generic static analysis framework.
https://github.com/Washi1337/Echo
bytecode cil code-analysis control-flow-analysis data-flow-analysis emulation x86
Last synced: 19 days ago
JSON representation
Generic static analysis framework.
- Host: GitHub
- URL: https://github.com/Washi1337/Echo
- Owner: Washi1337
- License: other
- Created: 2019-06-07T08:44:38.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2026-01-17T14:25:01.000Z (24 days ago)
- Last Synced: 2026-01-17T22:33:39.258Z (23 days ago)
- Topics: bytecode, cil, code-analysis, control-flow-analysis, data-flow-analysis, emulation, x86
- Language: C#
- Homepage: https://docs.washi.dev/echo
- Size: 2.94 MB
- Stars: 246
- Watchers: 15
- Forks: 34
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- Awesome-Binary-Analysis-Automation - Echo - Static analysis, symbolic execution, and emulation framework. (Automated Reverse Engineering)
- awesome-rainmana - Washi1337/Echo - Generic static analysis framework. (C# #)
README
# Echo
Echo is an experimental generic, static analysis, symbolic execution and emulation framework, that aims to help out with binary code analysis for a variety of platforms or backends.
Echo is released under the LGPLv3 license.
## Main Features
- [x] Generic Graph Models
- [x] Traversal and structural detection algorithms
- [x] Serialization to Dot/GraphViz
- [x] Generic Control flow Analysis
- [x] Create static and symbolic flow graphs
- [x] Dominator analysis
- [x] Serialize into scoped flow blocks or a list of instructions
- [x] Generic Data flow Analysis
- [x] Create data flow graphs
- [x] Inspect stack and variable dependencies of instructions
- [x] Generic AST Construction
- [x] Lift control flow graphs to Abstract Syntax Trees (ASTs)
- [x] Automatic variable cross-referencing
- [x] Generic Emulation Engine Framework
- [x] Virtual memory model using low level bit vectors
- [x] Support for HLE and LLE arithmetic on fully known, partially known and fully unknown bit vectors of any size
## Supported Backends
| Architecture | Back-end | Control Flow | Data Flow | AST | Purity Classification | Emulation |
|--------------|---------------------------------------------------------|--------------|-----------|---------|-----------------------|-----------|
| CIL | [AsmResolver](https://github.com/Washi1337/AsmResolver) | ✓ | ✓ | ✓ | ✓ | ✓ (WIP) |
| CIL | [dnlib](https://github.com/0xd4d/dnlib) | ✓ | ✓ | ✓ | ✓ | |
| x86 (32-bit) | [Iced](https://github.com/icedland/iced) | ✓ | ✓ | ✓ (WIP) | | |
| x86 (64-bit) | [Iced](https://github.com/icedland/iced) | ✓ | ✓ | ✓ (WIP) | | |
## Binaries
- [Nightly NuGet Feed](https://nuget.washi.dev/)
| Branch | Status (Linux) |
|--------|---------------------------------------------------------------------------------|
| master |  |
## Compiling
Simply run
```
dotnet build
```
Alternatively, use any IDE that is capable of building .NET Standard 2.0 projects (such as Visual Studio or JetBrains Rider).
Not all projects need to be built for a working binary to be produced. Only the core libraries found in `src/Core` are required to be built. Any other project, such as the platform-specific back-ends in the `src/Platforms` directory and the test projects in `test/`, is optional and can be unloaded safely.
## Support
- [Documentation](https://docs.washi.dev/echo)
- [Issue tracker](https://github.com/Washi1337/Echo/issues)
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).