Skip to content

Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.

License

Notifications You must be signed in to change notification settings

plasma-disassembler/plasma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ec7df9b · Mar 4, 2019
Nov 14, 2017
Mar 4, 2019
Mar 4, 2019
May 23, 2015
Apr 17, 2016
Jun 4, 2016
Mar 10, 2015
May 13, 2016
Jul 8, 2018
Jul 8, 2018
Sep 14, 2018
Mar 9, 2016
May 11, 2018
Mar 4, 2019

Repository files navigation

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

About

Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages