Skip to main content

Automated Reverse Engineering via LLMs with Cutter

Project description

CutterMCP

CutterMCP+

Automated Reverse Engineering via LLMs

Cutter is a powerful, user-friendly, and completely free reverse engineering tool.

Now, combined with modern Large Language Models (LLMs), they can do even more.

🤖 “Give AI a sharp cutter!”

Demos

Demo 1: Hackthebox Behind the Scenes (Easy level illeagal instruction bypass, Level: very easy)

As demonstrated in the video below, this plugin enables Cutter to automatically solve simple reverse engineering CTF challenges(From hack the box).

The LLM can notice anti-analysis techniques such as illegal instruction ud2. In this case, ud2 jammed the decompiler and produced incomplete result.

claude-sonnet-3.7 noticed this and tried to read the assembly directly to get around it. The entire process took about a minute to find the correct answer, without human intervention.

https://github.com/user-attachments/assets/bc86df16-93e1-473f-8eb4-3161a7b4a48e

(The video has not been accelerated.)

Demo 2: Hackthebox Virtually Mad (VM analysis. Level: Medium)

This is a VM analysis challenge. You need to reverse the opcode and figure out the rules. There are functions that are called in key parts via function pointers, so these are not listed by cutter.

So, the more intelligent `claude-opus-4' was used.

With prompt: Let's do a CTF reverse analysis challenge. virtually.mad. this is an ELF file. Cutter MCP is ready for you. You can call cutter to help you complete the challenge.

With no intervention claude-opus-4 completed the challenge using cutter.

image

Demo 3: ShellcodeEncrypt2DLL (Malware sample, VirusTotal 0/72)

It can also assist in malware analysis workflows, helping you accelerate tasks or extract key information.

In my previous project, there was a shellcode loader that achieved a VirusTotal score of 0/72 (ehmm...at that time I mean), but it was unable to withstand analysis by LLMs.

The analysis results from claude-opus-4 are completely correct, and the function has been renamed, a guess has been made: Hey, this is a shellcode loader.

The entire process took a few minutes and also required no human intervention.

analyze_shellcodeLoader

Available functionality:

list_functions() function_detail() list_globals() list_strings() list_segments() list_vars() list_entry_points()

decompile() disasm_text() disasm_json() disasm_by_func_text() disasm_by_func_json()

xrefs_to()

rename_function() rename_local_variable() set_comment() set_local_variable_type()

current_address() current_function()

read_bytes()

How to use?

First, make sure that cutter and python3 are installed.

Dependencies:

pip install -r requirements.txt

Dependencies refer to requirements.txt. If you encounter version conflict, consider different versions of dependencies.

The problem is cutter load plugin directly and bypassed uv. I will consider splitting the plug-in to ease dependency management later.

Cutter plugin:

This is about the mcp_plugin.py. It will serve as a plugin of cutter and start a HTTP API server. mcp_server.py will rely on it to obtain information.

  1. Run Cutter
  2. Go to Edit -> Preferences -> Plugins
  3. You can find the plugin directory location in the dialog.
  4. Copy mcp_plugin.py to the <cutter_plugins>/python folder(not the mcp_server.py)
  5. Restart your cutter

MCP Host:

For example (in cline, cursor etc) in MCP config file:

{
  "mcpServers": {
    "cuttermcp-plus": {
      "command": "python",
      "args": [
        "<ABSOLUTE/PATH/TO>/mcp_server.py"
      ]
    }
  }
}

LLM

In most cases, claude-sonnet-4 is good enough.

gemini-2.5-pro It can also solve the vast majority of tasks, and it’s a bit cheaper than sonnet-4.

I don't have permission to access OpenAI's o3 model, so I didn't do any testing. o4-mini can also effectively solve simple CTF questions, but since I don't have permission, I won't provide the thought process.

Models such as gemini-2.5-flash and gpt-4.1-mini their performance may not be satisfactory.

Is this safe?

For example, When analyzing malware the string in the data section may cause injection. So, do not automatically agree to all execute commands.

Also, be aware of the spending on tokens.

TODO

  1. Save tokens.
  2. Split the plugin into two parts for convenient uv management.

Special Thanks

Amey Pathak: Creator of the first CutterMCP

He's definitely cool. He got OSED certificate at the age of 19.

Without his project, this project probably wouldn't exist.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_restkhz_cuttermcp_plus-0.1.0.tar.gz (224.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_restkhz_cuttermcp_plus-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_restkhz_cuttermcp_plus-0.1.0.tar.gz
  • Upload date:
  • Size: 224.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_restkhz_cuttermcp_plus-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8db81b5dd387d2f35dcd8ecd2e6b4f2a39f8c85f1d24774dde8075aadc96b19f
MD5 76772a15c0926b8430bc4e9429474821
BLAKE2b-256 413ba16d83d7598746a98ad11a65890809c3342c122bb71926d793ef653f9f1d

See more details on using hashes here.

File details

Details for the file iflow_mcp_restkhz_cuttermcp_plus-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_restkhz_cuttermcp_plus-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 243.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_restkhz_cuttermcp_plus-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3b555fff6d56a252b5994c1928a2e44984764c4afe9efc7b60afe5b483f70fef
MD5 a1643b3b230909bf6ae18033e19067ae
BLAKE2b-256 de5be5861bfe79eb2b2bf7b9c72239376d3852b677dbea67a4d8f2756bd37382

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page