|
1 | 1 | <div align="center"> |
2 | 2 |
|
3 | | -  |
| 3 | +  |
4 | 4 |
|
5 | | -  |
6 | | -  |
7 | | - [](https://redasm.dev) |
8 | | - [](https://twitter.com/re_dasm) |
| 5 | +  |
| 6 | +  |
| 7 | + [](https://redasm.dev) |
| 8 | + [](https://twitter.com/re_dasm) |
9 | 9 |
|
10 | | -</div> |
11 | | - |
12 | | -<div align="center"> |
13 | | - |
14 | 10 | [](https://github.com/redasm-dev/workspace/actions/workflows/ci.yml) |
15 | 11 | [](https://github.com/redasm-dev/workspace/actions/workflows/nightly.yml) |
16 | | - |
| 12 | + |
17 | 13 | </div> |
18 | 14 |
|
19 | | -<hr> |
| 15 | +REDasm is a disassembler and binary analysis tool for Windows and Linux, |
| 16 | +built for both hobbyists and professional reverse engineers. |
| 17 | +It supports various CPU architectures and executable formats |
| 18 | +(see [Supported Formats and Architectures](#supported-formats-and-architectures)). |
| 19 | +It also offers an interactive listing, control flow graph view, cross-references, string detection and automatic |
| 20 | +function recovery. |
20 | 21 |
|
21 | | -A free and open source disassembler designed for both hobbyists and professional reverse engineers. |
22 | | -Built on a solid, extensible core with a plugin architecture, REDasm supports multiple CPU architectures and executable formats. |
23 | | - |
24 | | -<h5 align="center"> |
25 | | -Version 4 is currently in active development and introduces a completely redesigned foundation |
26 | | -</h5> |
| 22 | +REDasm is released under GPL-3.0 license, and every plugin ships as open source. |
27 | 23 |
|
28 | 24 | <div align="center"> |
29 | 25 |
|
30 | | -  |
| 26 | +  |
31 | 27 |
|
32 | 28 | </div> |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## Table of Contents |
| 33 | + |
| 34 | +- [Design Principles](#design-principles) |
| 35 | +- [Features](#features) |
| 36 | +- [Supported Formats and Architectures](#supported-formats-and-architectures) |
| 37 | +- [Download](#download) |
| 38 | +- [Contributing](#contributing) |
| 39 | +- [FAQ](#faq) |
| 40 | +- [License](#license) |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## Design Principles |
| 45 | + |
| 46 | +- **Open by default**: GPL core & plugins, public C API. Everything can be read, |
| 47 | + modified and rebuilt. |
| 48 | +- **Native, self-contained core**: [libredasm](https://github.com/redasm-dev/core) is written in C17 and |
| 49 | + doesn't depends on VM, runtime or interpreter. |
| 50 | +- **No platform lock-in**: Windows and Linux are what's actively developed and tested; |
| 51 | + support for other platforms is open to anyone willing to contribute the changes they need. |
| 52 | +- **Extendable**: plugins are shared libraries loaded at runtime. Adding a CPU architecture or a file format |
| 53 | + never requires touching the core. |
| 54 | +- **First class native GUI**: written with Qt6 and sits entirely above core API. The interactive listing, |
| 55 | + graph view and navigation are designed together with the engine, not layered on afterwards. |
| 56 | +- **First class support for retro and legacy formats**: DOS, Win16, OS/2 era and console binaries are part of REDasm experience. |
| 57 | + This is what makes software preservation, recovery and porting possible for binaries whose source code is long gone. |
| 58 | + |
| 59 | +## Features |
| 60 | + |
| 61 | +- Interactive **disassembly listing** with renaming, commenting and typed data. |
| 62 | +- **Control flow graph** view at function granularity, synchronized with the listing. |
| 63 | +- **Cross-references** for code and data, with navigable history. |
| 64 | +- **RDIL**, a minimal, architecture-neutral, intermediate language used for analysis and lifting. |
| 65 | +- Automatic **string detection** (ASCII, UTF-16 and Latin-1 wide strings). |
| 66 | +- **Type system** with structs, unions, enums and typedefs, applied directly to the listing. |
| 67 | +- Integrated **hex view**. |
| 68 | +- **Segments**, imports/exports, symbols, strings and problems panels. |
| 69 | +- **Project save/load** so analysis, renames and comments survive between sessions. |
| 70 | +- **Patching** and export of analysis data. |
| 71 | +- Light and dark **themes**. |
| 72 | + |
| 73 | +## Supported Formats and Architectures |
| 74 | + |
| 75 | +Maturity levels: **S** production ready · **A** highly stable · **B** functional · **C** basic / stub · **D** wip / experimental |
| 76 | + |
| 77 | +### Loaders (executable formats) |
| 78 | + |
| 79 | +| Format | Description | Status | |
| 80 | +|---|---|:---:| |
| 81 | +| **PE / PE+** | Windows executables and DLLs, 32-bit and 64-bit | **S** | |
| 82 | +| **ELF / ELF64** | Linux, BSD and Unix executables and shared objects | **A** | |
| 83 | +| **MZ (DOS)** | MS-DOS executables and COM programs | **A** | |
| 84 | +| **NE (Win16)** | 16-bit Windows and OS/2 New Executable | **B** | |
| 85 | +| **LE / LX (OS/2)** | Linear Executable, OS/2 and DOS extenders (VxD is supported too) | **B** | |
| 86 | +| **PSX EXE (PS1)** | PlayStation 1 executables | **B** | |
| 87 | + |
| 88 | +### Processors (CPU architectures) |
| 89 | + |
| 90 | +| Architecture | Description | Status | |
| 91 | +|---|---|:---:| |
| 92 | +| **x86 / x86_64** | 16-bit, 32-bit and 64-bit Intel/AMD | **S** | |
| 93 | +| **MIPS** | MIPS32, big and little endian, delay slot aware | **A** | |
| 94 | +| **ARM / Thumb** | ARM32 and Thumb instruction sets | **B** | |
| 95 | +| **ARM64** | AArch64 | **A** | |
| 96 | + |
| 97 | +### Analyzers |
| 98 | + |
| 99 | +| Analyzer | Description | Status | |
| 100 | +|---|---|:---:| |
| 101 | +| **Visual Basic** | Recover VB5/VB6 events and project information | **A** | |
| 102 | +| **MSVC RTTI** | MSVC run-time type information and vtable recovery | **D** | |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## Download |
| 107 | + |
| 108 | +Pre-built binaries are published on the [Releases page](https://github.com/redasm-dev/redasm/releases): |
| 109 | + |
| 110 | +- **Linux**: AppImage, runs on any reasonably recent distribution. |
| 111 | +- **Windows**: portable build, no installation required. |
| 112 | + |
| 113 | +Nightly builds are produced automatically from `master` and are GPG signed. |
| 114 | +They track development closely and **may be unstable**. |
| 115 | + |
| 116 | +--- |
| 117 | + |
| 118 | +## Building from Source |
| 119 | + |
| 120 | +REDasm is split across several repositories: the [workspace](https://github.com/redasm-dev/workspace) repo fetches and builds all of them together. |
| 121 | +Requirements, build steps and version pinning are documented in the |
| 122 | +[workspace README](https://github.com/redasm-dev/workspace). |
| 123 | + |
| 124 | +## Contributing |
| 125 | + |
| 126 | +Bug reports, feature requests and pull requests are welcome. |
| 127 | +All reports are now centralized at [in a dedicated repo](https://github.com/redasm-dev/bugs), so report there regardless of which component the problem |
| 128 | +belongs to, whether it's the GUI, the core or a plugin. |
| 129 | + |
| 130 | +## FAQ |
| 131 | + |
| 132 | +**Is REDasm free?** |
| 133 | +Yes. The whole project is GPL-3.0, including every bundled plugin. |
| 134 | +You can use it, study it, modify it |
| 135 | +and redistribute it under the terms of the license. |
| 136 | + |
| 137 | +**Does REDasm have a decompiler?** |
| 138 | +Not yet. The foundations like RDIL, function boundaries, basic blocks, the type system are already in |
| 139 | +place, but decompilation is a long-term goal, some important features are still missing. |
| 140 | + |
| 141 | +**Which platforms are supported?** |
| 142 | +Windows and Linux. |
| 143 | +Those are the platforms that can be actively tested, so they are the ones that get support. |
| 144 | +Nothing in the codebase is tied to them, though, if you need REDasm on another platform, |
| 145 | +open an issue or send the changes required, and support can be extended from there. |
| 146 | + |
| 147 | +**Can I script REDasm?** |
| 148 | +A Python plugin API is on the roadmap. |
| 149 | +Today, extensions are written in C. |
| 150 | + |
| 151 | +**Can I run REDasm headless as library?** |
| 152 | +Yes, this repo contains only the GUI, it's still the main repo for historical reasons. |
| 153 | +REDasm engine lives in [core](https://github.com/redasm-dev/core) repo and contains what's needed |
| 154 | +to analyze binaries and load plugins. |
| 155 | + |
| 156 | +**What happened to version 3?** |
| 157 | +Retired because of technical debt and engine limitations, version 4 is a complete rewrite |
| 158 | +written in plain C with a more powerful and fast analysis engine. |
| 159 | + |
| 160 | +## License |
| 161 | + |
| 162 | +REDasm is released under the [GNU General Public License v3.0](LICENSE). |
0 commit comments