plasma-disassembler/plasma
GitHub: plasma-disassembler/plasma
Plasma 是一个支持多架构和多种文件格式的交互式反汇编器,能够生成彩色伪代码并提供 Python 脚本扩展能力,帮助安全研究人员更高效地进行逆向分析。
Stars: 3068 | Forks: 273
# PLASMA
旧项目名称为 **Reverse**。
`PLASMA` 是一个交互式反汇编器。它可以生成具有彩色语法且更具可读性的汇编(伪代码)。你可以使用可用的 Python API 编写脚本(请参见下面的示例)。该项目仍处于大力开发中。
[wiki](https://github.com/joelpx/plasma/wiki):TODO 列表和一些文档。
它支持:
* 架构:x86{64}、ARM、MIPS{64}(部分支持 ARM 和 MIPS)
* 格式:ELF、PE、RAW
**警告**:在实现结构和类型定义之前,数据库兼容性可能会被破坏。
## 依赖项
* python >= 3.4
* [capstone](https://github.com/aquynh/capstone),已使用 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`(包含在 binutils Linux 软件包中)
* 终端应支持 UTF8 和 256 色(如果不支持,请使用选项 `--nocolor`)
可选:
* `python-qt4`,用于内存映射
* [keystone](https://github.com/keystone-engine/keystone),用于脚本 asm.py
## 安装
```
./install.sh
```
或者,如果你已经通过之前的命令安装了依赖项:
```
./install.sh --update
```
检查测试:
```
make
....................................................................................
84/84 tests passed successfully in 2.777975s
analyzer tests...
...
```
## 函数的伪反编译
```
$ plasma -i tests/server.bin
>> v main
# 您可以按下 tab 来显示伪反编译
# | 来分割窗口
# 有关所有快捷键,请参见命令帮助
```

通过反转条件跳转来控制流图:

## 脚本编写 (Python API)
关于 API 的更多信息请参阅 [wiki](https://github.com/joelpx/plasma/wiki/api)。
一些示例(这些脚本放置在 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
```
标签:API, Capstone, DAST, ELF, Hakrawler, MIPS, PE, Python, URL提取, x86, 二进制分析, 二进制解析, 云安全监控, 云安全运维, 云资产清单, 伪代码, 反汇编器, 反编译, 恶意软件分析, 控制流图, 无后门, 汇编, 漏洞分析, 网络信息收集, 路径探测, 逆向工具, 逆向工程, 静态分析