https://github.com/plasma-disassembler/plasma
Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.
https://github.com/plasma-disassembler/plasma
arm capstone disassembler mips reverse-engineering x86 x86-64
Last synced: 26 days ago
JSON representation
Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.
- Host: GitHub
- URL: https://github.com/plasma-disassembler/plasma
- Owner: plasma-disassembler
- License: gpl-3.0
- Created: 2015-03-09T21:16:46.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2021-08-31T16:57:42.000Z (over 3 years ago)
- Last Synced: 2024-10-03T08:03:06.191Z (6 months ago)
- Topics: arm, capstone, disassembler, mips, reverse-engineering, x86, x86-64
- Language: Python
- Homepage:
- Size: 2.54 MB
- Stars: 3,050
- Watchers: 149
- Forks: 275
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- stars - plasma-disassembler/plasma - code with colored syntax. (HarmonyOS / Windows Manager)
- awesome-bytecode - Plasma - Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax
- starred-awesome - plasma - Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax. (Python)
- awesome-hacking-lists - plasma-disassembler/plasma - Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax. (Python)
README
PLASMA
======The old project name was **Reverse**.
`PLASMA` is an interactive disassembler. It can generate a more readable
assembly (pseudo code) with colored syntax. You can write scripts with the
available Python api (see an example below). The project is still in big development.[wiki](https://github.com/joelpx/plasma/wiki) : TODO list and some documentation.
It supports :
* architectures : x86{64}, ARM, MIPS{64} (partially for ARM and MIPS)
* formats : ELF, PE, RAW**Warning**: until structures and type definitions are not implemented, the
database compatibility could be broken.## Requirements
* python >= 3.4
* [capstone](https://github.com/aquynh/capstone), tested with 4.0-alpha5
* [python-pyelftools](https://github.com/eliben/pyelftools)
* [pefile](https://github.com/erocarrera/pefile) + python3-future
* [python-msgpack](https://github.com/msgpack/msgpack-python) >= 0.4.6
* `c++filt` (available in the binutils Linux package)
* terminal should support UTF8 and 256 colors (if not, use the option `--nocolor`)Optional :
* `python-qt4` used for the memory map
* [keystone](https://github.com/keystone-engine/keystone) for the script asm.py## Installation
./install.sh
Or if you have already installed requirements with the previous command:
./install.sh --update
Check tests :
make
....................................................................................
84/84 tests passed successfully in 2.777975s
analyzer tests...
...## Pseudo-decompilation of functions
$ plasma -i tests/server.bin
>> v main
# you can press tab to show the pseudo decompilation
# | to split the window
# See the command help for all shortcuts
Take the control of the flow graph by inverting conditional jumps:

## Scripting (Python API)
See more on the [wiki](https://github.com/joelpx/plasma/wiki/api) for the API.
Some examples (these scripts are placed in plasma/scripts) :
$ plasma -i FILE
plasma> py !strings.py # print all strings
plasma> py !xrefsto.py FUNCTION # xdot call graph
plasma> py !crypto.py # detect some crypto constants
plasma> py !asm.py CODE # assemble with keystone
plasma> py !disasm.py HEX_STRING # disassemble a buffer