Convert Figma logo to code with AI

rizinorg logocutter

Free and Open Source Reverse Engineering Platform powered by rizin

15,603
1,141
15,603
512

Top Related Projects

20,310

UNIX-like reverse engineering framework and command-line toolset

50,446

Ghidra is a software reverse engineering (SRE) framework

7,457

A powerful and user-friendly binary analysis platform!

15,664

Clone this repo to build Frida

7,268

Exploit Development and Reverse Engineering with GDB Made Easy

Quick Overview

Cutter is an open-source, cross-platform reverse engineering platform powered by rizin. It provides a modern interface for analyzing binaries, disassembling code, and performing various reverse engineering tasks. Cutter aims to make reverse engineering more accessible and efficient for both beginners and experienced professionals.

Pros

  • User-friendly interface with a customizable layout
  • Supports multiple architectures and file formats
  • Integrates powerful analysis capabilities from rizin
  • Extensible through plugins and scripting

Cons

  • Learning curve for users unfamiliar with reverse engineering concepts
  • May have performance issues with very large binaries
  • Some advanced features require knowledge of rizin commands

Getting Started

To get started with Cutter:

  1. Download the latest release from the official website or the GitHub releases page.
  2. Install Cutter on your system following the instructions for your operating system.
  3. Launch Cutter and open a binary file you want to analyze.
  4. Explore the various views and tools available in the interface, such as the disassembly view, hexdump, and graph view.
  5. Use the built-in analysis features or run custom rizin commands to gather more information about the binary.

For more detailed instructions and documentation, refer to the official Cutter documentation.

Competitor Comparisons

20,310

UNIX-like reverse engineering framework and command-line toolset

Pros of radare2

  • More lightweight and command-line focused, suitable for advanced users
  • Highly extensible with a wide range of plugins and scripts
  • Faster performance for large binary analysis tasks

Cons of radare2

  • Steeper learning curve due to command-line interface
  • Less intuitive for beginners compared to GUI-based tools
  • Limited visualization capabilities without additional plugins

Code comparison

radare2:

r2 -A binary
[0x00000000]> pdf @ main
[0x00000000]> afl
[0x00000000]> s sym.main

Cutter:

# No direct code comparison available as Cutter is a GUI application
# Users interact with a graphical interface instead of command-line

Summary

radare2 is a powerful command-line reverse engineering framework, offering extensive functionality and flexibility for advanced users. It excels in performance and extensibility but may be challenging for beginners. Cutter, built on top of radare2, provides a user-friendly GUI interface, making it more accessible for newcomers to reverse engineering. While Cutter sacrifices some of the raw power and speed of radare2, it offers improved visualization and a gentler learning curve. The choice between the two depends on the user's experience level and specific needs in reverse engineering tasks.

50,446

Ghidra is a software reverse engineering (SRE) framework

Pros of Ghidra

  • More comprehensive feature set for advanced reverse engineering tasks
  • Supports a wider range of architectures and file formats
  • Powerful scripting capabilities with Java and Python support

Cons of Ghidra

  • Steeper learning curve due to its complexity
  • Slower startup time and higher resource consumption
  • Less frequent updates compared to Cutter

Code Comparison

Ghidra (Java):

public class SimpleDecompiler extends GhidraScript {
    @Override
    public void run() throws Exception {
        DecompInterface decompInterface = new DecompInterface();
        DecompileResults results = decompInterface.decompileFunction(currentFunction, 30, monitor);
    }
}

Cutter (Python):

import cutter

def decompile_function():
    function = cutter.cmdj("afij")[0]
    decompiled = cutter.cmd("pdc @ " + function["name"])
    print(decompiled)

Both tools offer scripting capabilities, but Ghidra's API is more extensive and allows for deeper integration with its features. Cutter's scripting is simpler and more accessible for quick tasks. Ghidra's decompilation is generally more advanced, while Cutter focuses on providing a user-friendly interface for basic reverse engineering tasks.

7,457

A powerful and user-friendly binary analysis platform!

Pros of angr

  • Advanced symbolic execution and program analysis capabilities
  • Supports multiple architectures and binary formats
  • Extensive API for custom analysis and automation

Cons of angr

  • Steeper learning curve for beginners
  • Can be resource-intensive for large-scale analysis
  • Less user-friendly interface compared to GUI-based tools

Code Comparison

angr (Python):

import angr

proj = angr.Project('binary')
state = proj.factory.entry_state()
simgr = proj.factory.simulation_manager(state)
simgr.explore(find=0x400000)

Cutter (Python plugin):

import cutter

def analyze():
    function = cutter.cmdj("afl")[0]
    disasm = cutter.cmd(f"pdf @ {function['name']}")
    print(disasm)

Summary

angr is a powerful binary analysis framework with advanced capabilities, suitable for complex reverse engineering tasks and automated analysis. It offers extensive features but requires more expertise to use effectively.

Cutter, on the other hand, is a reverse engineering platform with a user-friendly GUI, making it more accessible for beginners. While it may not have the same level of advanced analysis features as angr, it provides a more intuitive interface for manual analysis and basic automation.

The choice between the two depends on the specific requirements of the project and the user's expertise level in reverse engineering and binary analysis.

15,664

Clone this repo to build Frida

Pros of Frida

  • Dynamic instrumentation framework, allowing real-time code injection and modification
  • Cross-platform support for mobile, desktop, and embedded systems
  • Extensive scripting capabilities using JavaScript

Cons of Frida

  • Steeper learning curve for beginners
  • May require more setup and configuration for complex scenarios
  • Less integrated GUI for analysis compared to Cutter

Code Comparison

Frida (JavaScript):

Java.perform(() => {
  const MainActivity = Java.use('com.example.app.MainActivity');
  MainActivity.secretFunction.implementation = function() {
    console.log('secretFunction called');
    return this.secretFunction();
  };
});

Cutter (Python plugin):

from cutter import *

class MyPlugin(CutterPlugin):
    def setupPlugin(self):
        self.addMenu("My Plugin")

    def setupInterface(self, main):
        action = QAction("Do Something", main)
        action.triggered.connect(self.doSomething)
        main.addMenuAction("My Plugin", action)

    def doSomething(self):
        print("Function called")

While Frida focuses on runtime manipulation and dynamic analysis, Cutter provides a more traditional reverse engineering environment with static analysis capabilities and a user-friendly GUI. Frida excels in mobile and runtime scenarios, whereas Cutter offers a comprehensive toolkit for binary analysis and disassembly.

7,268

Exploit Development and Reverse Engineering with GDB Made Easy

Pros of pwndbg

  • Lightweight and integrates seamlessly with GDB
  • Extensive support for exploit development and reverse engineering tasks
  • Active community and frequent updates

Cons of pwndbg

  • Command-line interface may be less intuitive for beginners
  • Limited visualization capabilities compared to Cutter's GUI
  • Requires more manual configuration and setup

Code Comparison

pwndbg:

import gdb
from pwndbg.commands import Command

class MyCommand(Command):
    """My custom command"""
    def __init__(self):
        super().__init__("mycommand", "My custom command")

Cutter:

#include <Cutter.h>

class MyPlugin : public CutterPlugin {
public:
    QString getName() const override { return "MyPlugin"; }
    QString getDescription() const override { return "My custom plugin"; }
};

pwndbg is a Python-based GDB extension, while Cutter is a Qt-based GUI application built on top of rizin. pwndbg offers more flexibility for experienced users and is better suited for command-line workflows. Cutter provides a more user-friendly interface with built-in visualization tools, making it easier for beginners to get started with reverse engineering and binary analysis tasks.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Cutter logo

Cutter

Cutter is a free and open-source reverse engineering platform powered by rizin. It aims at being an advanced and customizable reverse engineering platform while keeping the user experience in mind. Cutter is created by reverse engineers for reverse engineers.

Cutter CI Build status

Screenshot

Learn more at cutter.re.

Getting Cutter

Download

Cutter release binaries for all major platforms (Linux, macOS, Windows) can be downloaded from GitHub Releases.

  • Linux: If your distribution provides it, check for cutter package in your package manager (or cutter-re). If not available there, we have setup repositories in OBS for some common distributions. Look at https://software.opensuse.org/package/cutter-re and follow the instructions there. Otherwise download the .AppImage file from our release, make it executable and run as below or use AppImageLauncher.

    chmod +x Cutter*.AppImage; ./Cutter*.AppImage

  • macOS: Download the .dmg file or use Homebrew Cask:

    brew install --cask cutter

  • Windows: Download the .zip archive, or use either Chocolatey or Scoop:

    choco install cutter

    scoop bucket add extras followed by scoop install cutter

Build from sources

To build Cutter from sources, please check the Building Docs.

Docker image

To deploy cutter using a pre-built Dockerfile, it's possible to use the provided configuration. The corresponding README.md file also contains instructions on how to get started using the docker image with minimal effort.

Documentation

User Guide

Contribution Guidelines

Developers Docs

Plugins

Cutter supports both Python and Native C++ plugins.

Our community has built many plugins and useful scripts for Cutter such as the native integration of Ghidra decompiler or the plugin to visualize DynamoRIO code coverage. You can find a list of cutter plugins linked below. Feel free to extend it with your own plugins and scripts for Cutter.

Official & Community Plugins

Plugins Development Guide

Getting Help

Please use the following channels to ask for help from Cutter developers and community: