You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
plasma-disassembler ec7df9b2b9 fix: bad immediates analysis 4 years ago
images visual: 'i' to invert conditional jumps in the decompilation mode 5 years ago
plasma fix: bad immediates analysis 4 years ago
tests fix: bad immediates analysis 4 years ago
.dockerignore Initial docker config 8 years ago
.gitignore analyzer: registers simulation for x86 and MIPS32 7 years ago
Dockerfile Add entrypoint 7 years ago
LICENSE Update LICENSE, bad copy-paste 8 years ago
Makefile test: stack analysis test added 7 years ago
README.md fix #89: different output with capstone 4.0 5 years ago
install.sh fix #89: different output with capstone 4.0 5 years ago
requirements.txt add depends libs 4 years ago
run_plasma.py PLASMA: it's time to change the project name ! 7 years ago
setup.py Fix setup.py for pip10 5 years ago
test_plasma.py fix tests: force to create the db_path attribute 4 years ago

README.md

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 : 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, tested with 4.0-alpha5
  • python-pyelftools
  • pefile + python3-future
  • python-msgpack >= 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 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

plasma

Take the control of the flow graph by inverting conditional jumps:

plasma

Scripting (Python API)

See more on the wiki 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