All Projects → vivisect → Vivisect

vivisect / Vivisect

Licence: other

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Vivisect

Fhex
A Full-Featured HexEditor compatible with Linux/Windows/MacOS
Stars: ✭ 225 (-66.52%)
Mutual labels:  disassembler, reverse-engineering
Unipacker
Automatic and platform-independent unpacker for Windows binaries based on emulation
Stars: ✭ 273 (-59.37%)
Mutual labels:  emulation, reverse-engineering
Radare2
UNIX-like reverse engineering framework and command-line toolset
Stars: ✭ 15,412 (+2193.45%)
Mutual labels:  disassembler, reverse-engineering
Gtirb
Intermediate Representation for Binary analysis and transformation
Stars: ✭ 190 (-71.73%)
Mutual labels:  disassembler, reverse-engineering
Pwndbg
Exploit Development and Reverse Engineering with GDB Made Easy
Stars: ✭ 4,178 (+521.73%)
Mutual labels:  disassembler, reverse-engineering
Replica
Ghidra Analysis Enhancer 🐉
Stars: ✭ 194 (-71.13%)
Mutual labels:  disassembler, reverse-engineering
B2r2
B2R2 is a collection of useful algorithms, functions, and tools for binary analysis.
Stars: ✭ 262 (-61.01%)
Mutual labels:  disassembler, reverse-engineering
Imhex
🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.
Stars: ✭ 11,744 (+1647.62%)
Mutual labels:  disassembler, reverse-engineering
Beaengine
BeaEngine disasm project
Stars: ✭ 342 (-49.11%)
Mutual labels:  disassembler, reverse-engineering
Ddisasm
A fast and accurate disassembler
Stars: ✭ 325 (-51.64%)
Mutual labels:  disassembler, reverse-engineering
Detect It Easy
Program for determining types of files for Windows, Linux and MacOS.
Stars: ✭ 2,982 (+343.75%)
Mutual labels:  disassembler, reverse-engineering
Capstone
Capstone disassembly/disassembler framework: Core (Arm, Arm64, BPF, EVM, M68K, M680X, MOS65xx, Mips, PPC, RISCV, Sparc, SystemZ, TMS320C64x, Web Assembly, X86, X86_64, XCore) + bindings.
Stars: ✭ 5,374 (+699.7%)
Mutual labels:  disassembler, reverse-engineering
Xpeviewer
PE file viewer/editor for Windows, Linux and MacOS.
Stars: ✭ 144 (-78.57%)
Mutual labels:  disassembler, reverse-engineering
Miasm
Reverse engineering framework in Python
Stars: ✭ 2,649 (+294.2%)
Mutual labels:  disassembler, reverse-engineering
Mgbdis
Game Boy ROM disassembler with RGBDS compatible output
Stars: ✭ 131 (-80.51%)
Mutual labels:  disassembler, reverse-engineering
faucon
NVIDIA Falcon Microprocessor Suite
Stars: ✭ 28 (-95.83%)
Mutual labels:  emulation, disassembler
X64dbg
An open-source x64/x32 debugger for windows.
Stars: ✭ 37,825 (+5528.72%)
Mutual labels:  disassembler, reverse-engineering
Bin2llvm
A binary to LLVM translator
Stars: ✭ 108 (-83.93%)
Mutual labels:  disassembler, reverse-engineering
Plasma
Plasma is an interactive disassembler for x86/ARM/MIPS. It can generates indented pseudo-code with colored syntax.
Stars: ✭ 2,956 (+339.88%)
Mutual labels:  disassembler, reverse-engineering
Scratchabit
Easily retargetable and hackable interactive disassembler with IDAPython-compatible plugin API
Stars: ✭ 369 (-45.09%)
Mutual labels:  disassembler, reverse-engineering

Vivisect / Vdb / Vtrace

A combined disassembler/static analysis/symbolic execution/debugger framework. More documentation is in the works :)

Vdb

As in previous releases, the command python -m vdb.vdbbin from the checkout directory will drop you into a debugger prompt on supported platforms. ( Windows / Linux / FreeBSD / OSX... kinda? )

Commands in vdb grow/refine quickly, so use in-line help such as:

vdb> help

or...

vdb> help writemem

to show available commands and options.

Vivisect

Fairly un-documented static analysis / emulation / symbolik analysis framework for PE/Elf/Mach-O/Blob binary formats on various architectures. To start with, you probably want to run a "bulk analysis" pass on a binary using:

python3 -m vivisect.vivbin -B <binaryfile>

which will leave you with .viv

Then run:

python3 -m vivisect.vivbin <binaryfile>.viv

to open the GUI and begin reverse engineering. Or, if you're impatient, you can just run:

python3 -m vivisect.vivbin <binaryfile>

to do both simultaneously. You will have to hit to manually save the workspace file though.

As with most vtoys, the ui relies fairly heavily on right-click context menus and various memory views.

For the binary ninjas, all APIs used during automatic analysis (and several that aren't) are directly accessible for use writing your own custom research tools. The interface should be nearly the same when dealing with a real process (via vdb/vtrace) and dealing with an emulator / viv workspace.

Installing

Unlike previous releases, version v1.x.x and up of vivisect/vdb should be entirely pip installable, so just running pip install vivisect should get you the latest release and all of the baseline dependencies in order to run vivisect in a headless mode.

However, should you also desire a GUI, you can run pip install vivisect[gui] to also install the pyqt5 based gui dependencies.

For convenience, setup.py for vivisect installs the main user facing scripts of vivbin and vdbbin to the local path, so instead of having to run:

python3 -m vivisect.vivbin <binaryfile>
python3 -m vdb.vdbbin

You should just be able to run

vivbin -B <binaryfile>
vdbbin

and have things work as normal.

Versioning

All releases prior to v1.0.0 are python2 only. As of v1.0.0, vivisect/vdb/vstruct are all python3 compatible. Please report any bugs/issues to the issue tracker or hit us up in the #vivisect room in the synapse slack

Please see v0.x.x-support branch for the current python2 version, or pip install the v.0.2.x version of vivisect.

Upgrading

Due to fun pickle shenanigans, old python2 vivisect workspaces are not typically compatible with python3. In what will be one of (if not, the) final release of the python2 compatible vivisect, v0.2.1 will include a conversion script that can migrate the basicfile-based vivisect workspaces files to the msgpack-back ones, which should be loadable in python3 vivisect.

Build Status

CircleCI Build Status

Extending Vivisect / Vdb

Vivisect allows you to extend it's functionality through the use of Vivisect Extensions. Extensions are loaded with the GUI, and they give nearly complete access to the entire Vivisect Workspace and GUI.

Extensions are Python modules loaded from directories contained in the VIV\_EXT\_PATH environment variable. Like DOS or Unix paths, this is a set of directories separated by the OS-specific separator (Windows=';', Unix=':').

Like all Python modules, they can be either a \<modulename\>.py file or a directory with a __init__.py file inside it. Each module will be loaded into the namespace and the vivExtension(vw, vwgui) function executed (for Vdb, the vdbExtension(vdb, vdbgui) function will be executed). It is up to the module to make any modifications (adding menu entries or toolbars, hooking the context menu, etc) within this function. Submodules may be included in the directory- version of the extensions, and may be accessed with from . import \<blah\>.

In addition to your private zero-day finding extensions, outside plugins may be wrapped into Vivisect by simply copying/symlinking them into one of your extension directories (listed in the VIV\_EXT\_PATH).

If no VIV\_EXT\_PATH environment variable has been defined, Vivisect will look for extensions in $HOME/.viv/plugins/ if it exists. If VIV\_EXT\_PATH is defined, you much choose to add $HOME/.viv/plugins/ to it or not. It will not be checked unless it is explicitly listed in VIV\_EXT\_PATH.

For examples of using this powerful capability, look at the example file at: vivisect/extensions/example\_gui\_extension.py

The Power of Scripts with Vivisect

You can script up menial tasks or powerful techniques using simple Python scripts from either the command-line or the GUI.

Scripts are loaded and run as any python code is run from the command line.
The key diffenece is that Vivisect places a VivWorkspace object in the global namespace with the name vw. The GUI, if one exists (Vivisect can be run headless), can be accessed using vw.getVivGui().

From the CommandLine, analysis modules can be run in the following fashion: $ vivbin -M attackmodule.py targetbin.viv If your module makes any changes to the VivWorkspace, be sure it saves: vw.saveWorkspace()

To run a script from the GUI, the command bar at the bottom of the screen is used. Simply enter: script attackmodule.py \<args\> This method does not need to save to the workspace, as you can choose to do that through standard GUI methods (Ctrl-S or File->Save). This method has the added benefit of being able to provide arguments, which are placed in the namespace as argv.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].