Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CutterDiscordRPC

Discord Rich Presence for Cutter, the Rizin powered reverse engineering GUI.

License C++17 Qt Cutter Platform Dependencies

Discord Rich Presence showing a Cutter session

What it shows

  • Name of the open binary
  • Current function and address
  • Architecture, file format and function count
  • Session runtime
  • State as a verb: Reversing, Analyzing, Debugging, Emulating

Every item can be turned off on its own.

Install

git clone https://github.com/nvrmnd-png/CutterDiscordRPC.git
cd CutterDiscordRPC
./setup.sh

The script finds your Cutter installation, tells you which versions it sees, and then offers two ways forward:

  1. Prebuilt pulls a matching binary from the releases page, nothing to compile
  2. Build from source compiles against whatever you have installed

It knows the difference between a system install, a Flatpak and an AppImage, picks the right plugin directory for each, and verifies afterwards that the installed file is actually there. Non interactive runs work too, with ./setup.sh --prebuilt or ./setup.sh --build.

Doing it by hand
sudo apt install cmake g++ qt6-base-dev rizin-dev
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
cmake --install build

Plugin directories per flavor:

  • System install: ~/.local/share/rizin/cutter/plugins/native/
  • Flatpak: ~/.var/app/re.rizin.cutter/data/rizin/cutter/plugins/native/
  • Windows: %APPDATA%\rizin\cutter\plugins\native\
  • macOS: ~/Library/Application Support/rizin/cutter/plugins/native/

Restart Cutter afterwards. Help → About → Plugins has to list "Discord Rich Presence".

A native plugin only loads when Cutter, Qt and Rizin match the versions it was built against. A Flatpak has to be built inside its own sandbox, which setup.sh does for you. An AppImage ships its libraries but no headers, so nothing can be compiled against it, only a prebuilt matching that exact AppImage will work.

Usage

Everything lives under Plugins → Discord Rich Presence:

  • Enabled turns the presence on and off
  • Options… opens the settings and shows the connection state live

Configuration

Stored in ~/.config/rizin/cutter/discord_rpc.json and reloaded the moment you save it:

{
    "enabled": true,
    "update_interval": 15,
    "show_filename": true,
    "show_function": true,
    "show_address": true,
    "show_time": true,
    "show_arch": true,
    "address_type": "cursor"
}

update_interval is the wait in seconds between two updates, at least 15, because Discord accepts only five updates per 20 seconds. address_type is either cursor for the address under the cursor or function_start for the beginning of the current function.

How it reaches your Discord account

No login, no token, no OAuth. The plugin writes to the local IPC socket of the Discord desktop client that is already signed in on the same machine, so the account comes from the client, never from the plugin.

The presence is visible only with the desktop client, and only while Settings → Activity Privacy has the display of your current activity enabled.

Privacy

File names and function names are sent to Discord and are visible to everyone who can see your profile. For confidential work turn off Show file name or disable the presence entirely.

Troubleshooting

  • Plugin does not appear: almost always an ABI mismatch, Cutter, Qt and Rizin have to match your build environment
  • No presence although connected: check the activity setting in the Discord client
  • Status stays on "Connecting…": Discord is not running or the socket is unreachable, the plugin keeps retrying on its own
  • Log output: QT_LOGGING_RULES="cutter.discordrpc*=true" cutter, once the main window is up it goes to Cutter's console widget

Support

If this plugin made your reversing sessions a bit nicer, consider chipping in:

  • BTC bc1qmgnz54x4epaeuvz558z4d7n3a3dqk3vldsgcnt
  • XMR 43eLK3JjmkDiWAuP9b5N8sahtzQQByaVSEPbZvVTctXAYJ1cHGXbVL3f8PSREnmnSsY4rMkhx14UA8vxc5sfz4ZhDfxKkg5
  • ETH 0x8CF98DeF5d716E10697E5905caff34b405dcd4fF
  • SOL DFwWy5EMB5QRd1FTV81ft5WYyH6uHecRvPsXkLNRyh1s

License

MIT, see LICENSE.

About

Let your friends see what you are reversing. Discord Rich Presence for Cutter, with a setup script that does the install for you.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages