Cutter is a free and open-source reverse engineering platform powered by rizin

Overview

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 Total alerts

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: Download the .AppImage file. Then 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 Chocolatey:

    choco 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:

Comments
  • refactor DisassemblyLeftPanel::paintEvent

    refactor DisassemblyLeftPanel::paintEvent

    Detailed description About two years ago I wrote the algorithm of calculating layers of jump arrows. It was kinda ugly and I didn't understand how it worked (+ it didn't in some corner cases), so I promised myself to refactor it someday.

    Well, this day has come.

    This new algorithm roughly x2 faster, which speeds up whole DisassemblyLeftPanel::paintEvent by ~10%. (I made some changes to algorithm after benchmarking, but I'm sure it didn't affect performance much) I replaced QMap with std::vector, because in this case it's faster to use binary search or brute search than map search because all vector data fits in L1 cache.

    Also I changed standard to C++17, because I needed auto in lambda parameters. This is C++14 feature, but if we changing standard, why not use newer one?

    Test plan (required) some screenshots (binary - /usr/bin/ls): Screenshot_20210109_055221 Screenshot_20210109_055246 Screenshot_20210109_055323

    versus old algorithm:

    Screenshot_20210109_055524 Screenshot_20210109_055441 Screenshot_20210109_055619

    As you can see, new algorithm produces a littler bit prettier results (+ is easier to understand why).

    P.S. Is it possible to know all jumps on analysis stage, so we can call this algorithm only once and then just draw visible arrows? Because now arrows appear and disappear while scrolling, and this is a bit annoying, especially if jump is longer than disassembly listing (arrow will simply disappear before you see where it leads).

    opened by optizone 40
  • Add crash handling system

    Add crash handling system

    Work in progress. Tested only on Linux. Create this PR to be sure you dont mind that way of implementation.

    closes #1002

    Some screenshots and how it works:

    First goes information about error (SIGSEGV, SIGILL, SIGABRT, etc). image

    Then user can choose directory to save dump (in case he decided to save it). image

    Then he can open issue on github by clicking href. image

    opened by optizone 35
  • Right click for seek to address and select block in hexdump view

    Right click for seek to address and select block in hexdump view

    See issue #761

    For formula input it uses Core->math(), it will not do hexidecimal without the 0x prefix as the math function in r2 does not currently resolve this. Additionally, this method should allow for reference to things like "eip + 0xFF" (in other words better to make the user explicitly define which portions of the formula are hex and which are not).

    This was a real quick implementation so let me know if you want any changes to clean it up

    Screenshots below

    screenshot at 2018-10-05 11-04-58

    Seek to Address: screenshot at 2018-10-05 11-12-05

    Select Block: screenshot at 2018-10-05 11-12-58

    Result: screenshot at 2018-10-05 11-13-52

    opened by jamieb122 33
  • Always build r2 from the submodule and statically link it

    Always build r2 from the submodule and statically link it

    Both the README with its unconditional steps to build r2 as well as communication with developers lead me to believe that the only valid way to use Cutter is with the version of r2 that comes in the submodule. However, right now, this is unnecessarily contrived: Cutter requires r2 to be installed, either system-wide in /usr/local, or in $HOME, or alternatively somewhere else, and it dynamically links r2 so that you have to specify LD_LIBRARY_PATH.

    This PR builds on the r2 PR https://github.com/radare/radare2/pull/9155 that makes libr.a built on desktop platforms actually possible to link against, and does just that. Now, there is just a single, completely foolproof way to build Cutter, and the resulting binary does not need any particular environment.

    The complete list of changes is as follows:

    • radare2 is built in the submodule with only static libraries enabled (the configure/make invocation was extracted from sys/static.sh);
    • support for using pkg-config with either qmake or cmake was removed, since the submodule is always used;
    • FindRadare2.cmake, which now only handled library discovery on Windows, was removed and replaced with a hardcoded list of libraries, since that is what the recommended qmake buildsystem does on Windows anyway.

    Thoughts?

    opened by whitequark 33
  • Graph mouse click highlight wrong position

    Graph mouse click highlight wrong position

    Work environment

    | Questions | Answers |------------------------------------------------------|-------------------- | OS/arch/bits (mandatory) | Parrot 4.2 64 bit | File format of the file you reverse (mandatory) | ELF (happens to any format) | Architecture/bits of the file (mandatory) | x86_64 (happens to any architecture) | Cutter and r2 version, See About Cutter (mandatory) | Version 1.7.2 / Using r2 3.0.0 | Show version information full output (See About Cutter) in a pastebin document (mandatory) | https://pastebin.com/MSfrUAY6

    Expected behavior

    Cutter should display highlight color under selected object

    Actual behavior

    Cutter shows color from previous character: space, [ or any character before object; object last character does not have highlight color

    Additional Logs, screenshots, source-code, configuration dump, ...

    Screenshot: screenshot at 2018-10-11 00-48-05 Tested binary file hello.zip

    BUG UI 
    opened by dmknght 30
  • Add text editor for .cutterrc

    Add text editor for .cutterrc

    Is your feature request related to a problem? Please describe.

    Not all of our users are familiar with .cutterrc (and even not with .radare2rc). There is no comfortable way to edit it from inside Cutter. The use of .cutterrc can complete the settings we don't expose in the UI.

    Describe the solution you'd like I suggest exposing a simple text editor widget to edit the .cutterrc file. When opened, the widget will fetch the content of .cutterrc and display it in the text editor. Then, can be updated and saved to the file.

    It would be nice to have:

    1. Syntax highlighting (in case it looks good with r2 commands)
    2. Some examples of useful settings that the user can set
    good first issue 
    opened by ITAYC0HEN 25
  • Cutter RC Editor - Part B (basic editor)

    Cutter RC Editor - Part B (basic editor)

    Your checklist for this pull request

    Detailed description I have a created new file named InitializationFileEditor in /src/dialogs/preferences/. This handles most of the logic regarding cutterRC editor. The default location is loaded using a new function in Cutter.cpp named getCutterRCDefaultDirectory(). Due to the way .cutterrc files are loaded, this file will be loaded twice(execute all commands once, and then again) while starting Cutter.

    The following images shows the editor in working. Initially I had no .cutterrc files in any of the directories from where .cutterrc is loaded. Screenshot from 2020-04-19 00-56-45

    This is how the Initialization File Editor looks when no file is loaded.

    Screenshot from 2020-04-19 00-56-54

    Now, solarized theme has been added to the default and the highest priority .cutterrc file (last loaded one) using the editor.

    Screenshot from 2020-04-19 01-32-10

    After closing Cutter, in the next restart, solarized theme is loaded as expected.

    Screenshot from 2020-04-19 01-32-46

    Test plan (required)

    What steps should the reviewer take to test your pull request?

    • [ ] Test if the code creates a new .cutterrc file in case the file is not present in the default location.
    • [ ] Test if the code creates directory if the directory of the default location doesn't exist.
    • [ ] Test if the updates to the cutterRC from Cutter remains even after closing the preferences window and/or after closing Cutter.

    Closing issues

    Part B of #1837 will be completed by this. closes #2063

    opened by NirmalManoj 23
  • Got Build Error

    Got Build Error

    Followed every step including building radare2 from subdirectory but got following: The output of make [ 1%] Automatic moc, uic and rcc for target cutter Generating moc compilation cutter_automoc.cpp Generating qrc source cutter_automoc.dir/qrc_resources_HAS2BXGMQQBHVI.cpp [ 1%] Built target cutter_automoc Scanning dependencies of target cutter [ 3%] Building CXX object CMakeFiles/cutter.dir/main.cpp.o [ 5%] Building CXX object CMakeFiles/cutter.dir/cutter.cpp.o [ 6%] Building CXX object CMakeFiles/cutter.dir/widgets/DisassemblerGraphView.cpp.o [ 8%] Building CXX object CMakeFiles/cutter.dir/utils/RichTextPainter.cpp.o [ 10%] Building CXX object CMakeFiles/cutter.dir/dialogs/OptionsDialog.cpp.o [ 11%] Building CXX object CMakeFiles/cutter.dir/dialogs/AboutDialog.cpp.o [ 13%] Building CXX object CMakeFiles/cutter.dir/dialogs/CommentsDialog.cpp.o [ 15%] Building CXX object CMakeFiles/cutter.dir/dialogs/FlagDialog.cpp.o [ 16%] Building CXX object CMakeFiles/cutter.dir/dialogs/RenameDialog.cpp.o [ 18%] Building CXX object CMakeFiles/cutter.dir/dialogs/XrefsDialog.cpp.o [ 20%] Building CXX object CMakeFiles/cutter.dir/MainWindow.cpp.o [ 22%] Building CXX object CMakeFiles/cutter.dir/utils/Helpers.cpp.o [ 23%] Building CXX object CMakeFiles/cutter.dir/utils/HexAsciiHighlighter.cpp.o [ 25%] Building CXX object CMakeFiles/cutter.dir/utils/HexHighlighter.cpp.o [ 27%] Building CXX object CMakeFiles/cutter.dir/utils/Highlighter.cpp.o [ 28%] Building CXX object CMakeFiles/cutter.dir/utils/MdHighlighter.cpp.o [ 30%] Building CXX object CMakeFiles/cutter.dir/dialogs/preferences/AsmOptionsWidget.cpp.o [ 32%] Building CXX object CMakeFiles/cutter.dir/dialogs/NewFileDialog.cpp.o [ 33%] Building CXX object CMakeFiles/cutter.dir/AnalThread.cpp.o [ 35%] Building CXX object CMakeFiles/cutter.dir/widgets/CommentsWidget.cpp.o [ 37%] Building CXX object CMakeFiles/cutter.dir/widgets/ConsoleWidget.cpp.o [ 38%] Building CXX object CMakeFiles/cutter.dir/widgets/Dashboard.cpp.o [ 40%] Building CXX object CMakeFiles/cutter.dir/widgets/EntrypointWidget.cpp.o [ 42%] Building CXX object CMakeFiles/cutter.dir/widgets/ExportsWidget.cpp.o [ 44%] Building CXX object CMakeFiles/cutter.dir/widgets/FlagsWidget.cpp.o [ 45%] Building CXX object CMakeFiles/cutter.dir/widgets/FunctionsWidget.cpp.o [ 47%] Building CXX object CMakeFiles/cutter.dir/widgets/ImportsWidget.cpp.o [ 49%] Building CXX object CMakeFiles/cutter.dir/widgets/Notepad.cpp.o [ 50%] Building CXX object CMakeFiles/cutter.dir/widgets/Omnibar.cpp.o [ 52%] Building CXX object CMakeFiles/cutter.dir/widgets/PieView.cpp.o [ 54%] Building CXX object CMakeFiles/cutter.dir/widgets/RelocsWidget.cpp.o [ 55%] Building CXX object CMakeFiles/cutter.dir/widgets/SdbDock.cpp.o [ 57%] Building CXX object CMakeFiles/cutter.dir/widgets/SectionsDock.cpp.o [ 59%] Building CXX object CMakeFiles/cutter.dir/widgets/SectionsWidget.cpp.o [ 61%] Building CXX object CMakeFiles/cutter.dir/widgets/Sidebar.cpp.o [ 62%] Building CXX object CMakeFiles/cutter.dir/widgets/StringsWidget.cpp.o [ 64%] Building CXX object CMakeFiles/cutter.dir/widgets/SymbolsWidget.cpp.o [ 66%] Building CXX object CMakeFiles/cutter.dir/menus/DisassemblyContextMenu.cpp.o [ 67%] Building CXX object CMakeFiles/cutter.dir/widgets/DisassemblyWidget.cpp.o [ 69%] Building CXX object CMakeFiles/cutter.dir/widgets/SidebarWidget.cpp.o [ 71%] Building CXX object CMakeFiles/cutter.dir/widgets/HexdumpWidget.cpp.o [ 72%] Building CXX object CMakeFiles/cutter.dir/utils/Configuration.cpp.o [ 74%] Building CXX object CMakeFiles/cutter.dir/utils/Colors.cpp.o [ 76%] Building CXX object CMakeFiles/cutter.dir/dialogs/SaveProjectDialog.cpp.o [ 77%] Building CXX object CMakeFiles/cutter.dir/utils/TempConfig.cpp.o [ 79%] Building CXX object CMakeFiles/cutter.dir/utils/SvgIconEngine.cpp.o [ 81%] Building CXX object CMakeFiles/cutter.dir/utils/SyntaxHighlighter.cpp.o [ 83%] Building CXX object CMakeFiles/cutter.dir/widgets/PseudocodeWidget.cpp.o [ 84%] Building CXX object CMakeFiles/cutter.dir/widgets/VisualNavbar.cpp.o [ 86%] Building CXX object CMakeFiles/cutter.dir/widgets/GraphView.cpp.o [ 88%] Building CXX object CMakeFiles/cutter.dir/dialogs/preferences/PreferencesDialog.cpp.o [ 89%] Building CXX object CMakeFiles/cutter.dir/dialogs/preferences/GeneralOptionsWidget.cpp.o [ 91%] Building CXX object CMakeFiles/cutter.dir/dialogs/preferences/GraphOptionsWidget.cpp.o [ 93%] Building CXX object CMakeFiles/cutter.dir/widgets/QuickFilterView.cpp.o [ 94%] Building CXX object CMakeFiles/cutter.dir/widgets/ClassesWidget.cpp.o [ 96%] Building CXX object CMakeFiles/cutter.dir/cutter_automoc.cpp.o [ 98%] Building CXX object CMakeFiles/cutter.dir/cutter_automoc.dir/qrc_resources_HAS2BXGMQQBHVI.cpp.o [100%] Linking CXX executable cutter CMakeFiles/cutter.dir/cutter.cpp.o: In function CutterCore::sdbList(QString)': cutter.cpp:(.text+0x4e7): undefined reference tosdb_ns_path' CMakeFiles/cutter.dir/cutter.cpp.o: In function CutterCore::sdbListKeys(QString)': cutter.cpp:(.text+0x679): undefined reference tosdb_ns_path' cutter.cpp:(.text+0x6a5): undefined reference to sdb_foreach_list' CMakeFiles/cutter.dir/cutter.cpp.o: In functionCutterCore::sdbGet(QString, QString)': cutter.cpp:(.text+0x807): undefined reference to sdb_ns_path' cutter.cpp:(.text+0x854): undefined reference tosdb_const_get' CMakeFiles/cutter.dir/cutter.cpp.o: In function CutterCore::sdbSet(QString, QString, QString)': cutter.cpp:(.text+0x965): undefined reference tosdb_ns_path' CMakeFiles/cutter.dir/cutter.cpp.o: In function CutterCore::cmd(QString const&)': cutter.cpp:(.text+0xd30): undefined reference tor_mem_free' CMakeFiles/cutter.dir/cutter.cpp.o: In function CutterCore::cmdj(QString const&)': cutter.cpp:(.text+0x10f4): undefined reference tor_mem_free' cutter.cpp:(.text+0x1269): undefined reference to r_mem_free' CMakeFiles/cutter.dir/cutter.cpp.o: In functionCutterCore::loadFile(QString, unsigned long, unsigned long, bool, int, int, bool, QString const&)': cutter.cpp:(.text+0x14f3): undefined reference to r_bin_force_plugin' CMakeFiles/cutter.dir/cutter.cpp.o: In functionCutterCore::tryFile(QString, bool)': cutter.cpp:(.text+0x2908): undefined reference to sdb_bool_set' CMakeFiles/cutter.dir/cutter.cpp.o: In functionCutterCore::functionAt(unsigned long long)': cutter.cpp:(.text+0x40a1): undefined reference to r_anal_get_fcn_in' CMakeFiles/cutter.dir/cutter.cpp.o:(.data+0x88): undefined reference tor_crypto_version' CMakeFiles/cutter.dir/cutter.cpp.o:(.data+0xe8): undefined reference to `r_magic_version' collect2: error: ld returned 1 exit status make[2]: *** [cutter] Error 1 make[1]: *** [CMakeFiles/cutter.dir/all] Error 2 make: *** [all] Error 2

    Seems like a linking error to me, so tried various methods I've already purged radare2(one which is available from Ubuntu repositories) C/C++ Compiler: gcc-7.1 OS : Ubuntu 14.04 Kernel: 4.4.0-104-generic

    opened by rohanverma94 23
  • gdbserver and windbg remote debugging support

    gdbserver and windbg remote debugging support

    Detailed description

    This PR adds support for gdbserver and windbg remote debugging. According to 1246 and the wiki the windbg implementation only supports connecting to a path/pipe so only "WinDbg - Pipe" is available in the remote connect dialog for now.

    Test plan (required)

    For both - try invalid parameters, they should notify the user that cutter failed to connect or raise an error pointing to an issue in one of the parameters.

    Gdbserver: Open gdbserver :1234 /path/to/program and connect through the remote debugging button.

    Note: There's is an issue with suspending background tasks(looking into it @ 15415 in gdbserver so just step/continue with breakpoints or switch threads to see that it works for now.

    WinDbg:

    • Run .server npipe:pipe=PipeName,IcfEnable in WinDbg to start a server - this caused some weird behavior in r2, looking into it.
    • https://radare.gitbooks.io/radare2book/content/debugger/windbg.html - haven't set up a VM yet, would appreciate it if someone else who already has a debugging setup would try it with r2/cutter and report issues.
    Debug 
    opened by yossizap 22
  • Auto update check

    Auto update check

    Provides auto update check feature. Also improves way of manual update check.

    On start Cutter checks current available version. In case of available update, shows this window (Instead of "Some newer version", there will be newest version number) image

    P.S. Prints QNetworkReplyHttpImplPrivate::_q_startOperation was called more than once QUrl("https://api.github.com/repos/radareorg/cutter/releases/latest") in console when checks. It's a known bug. Fixed in 5.12.2 Qt version.

    opened by optizone 22
  • Compiling error:

    Compiling error: "clock_gettime"

    Hi,

    The AppImage can't run on ancient Linux environments. So, I'm trying to compile it from scratch inside a Debian 7 x64. I manually compiled/updated/installed cmake, python, git, meson and ninja, so the build system meets the requirements. No problems until I get this error:

    shlr/libtree_sitter.a(tree-sitter_lib_src_lib.c.o): In function `clock_now':
    /home/user/cutter/build/Radare2-Bundled-prefix/src/Radare2-Bundled-build/../../../../radare2/shlr/tree-sitter/lib/src/././clock.h:73: undefined reference to `clock_gettime'
    collect2: error: ld returned 1 exit status
    [1126/1507] Generating cc-arm-32.sdb with a meson_exe.py custom command
    ninja: build stopped: subcommand failed.
    make[2]: *** [Radare2-Bundled-prefix/src/Radare2-Bundled-stamp/Radare2-Bundled-build] Error 1
    make[1]: *** [CMakeFiles/Radare2-Bundled.dir/all] Error 2
    make: *** [all] Error 2
    

    This problems seems to appear in ancient radare2 compilations: https://github.com/radareorg/radare2/issues/1983 However, I don't know how to fix it. So, please can you help me?

    Futhermore, I suggest to use a more legacy environment to compile the AppImage, for example a Debian 7 or CentOS 7 almost. Or privide different AppImages based on the major kernel version.

    Regards.

    opened by lars18th 21
  • Comments in Disasm widget change when scroll up / down

    Comments in Disasm widget change when scroll up / down

    Environment information

    • Operating System: Parrot OS 5.1 amd64
    • Cutter version: 2.1.2, rizin 0.4.1
    • Obtained from:
      • [ ] Built from source
      • [ ] Downloaded release from Cutter website or GitHub
      • [x] Distribution repository
    • File format: ELF

    Describe the bug

    When I scroll up / down, the comment of Cutter changed like in the screenshots. image image image

    To Reproduce

    Steps to reproduce the behavior:

    1. Open binary file
    2. Go to disasm widget
    3. Scroll up / down

    Expected behavior

    Comments should not be changed.

    Additional context

    Deroad (on telegram) said it could be Rizin's problem. However, I think this is an issue on Cutter's side calling callback when scroll mouse event triggered.

    Tested file: meter_elf.zip

    opened by dmknght 0
  • Attaching problem at

    Attaching problem at "CutterCore::attachDebug"

    Environment information

    • Operating System: Windows 10
    • Cutter version: 2.1.2 and commit "d58edca0c858e96fd75ae22627e86eaec09de588"
    • Obtained from:
      • [ x] Built from source
      • [ x] Downloaded release from Cutter website or GitHub
      • [ ] Distribution repository
    • File format:

    Describe the bug attaching programs doesn't work image

    To Reproduce

    Steps to reproduce the behavior:

    1. Go to "Debug" on toolbar
    2. Click on "Attach to Process"
    3. See error

    Expected behavior Expected to connect with debugger

    Screenshots

    Additional context I found the problem at function "CutterCore::attachDebug(int pid)" in the file "Cutter.cpp"; compiled with commit "d58edca0c858e96fd75ae22627e86eaec09de588" The release version(Cutter 2.1.2) doesn't have the problem.

    Working Code image

    The commit version changed the "asyncCmd" part of the code. "asyncCmd" function got removed but idk if it got removed for some important reason(so i didn't use it)

    image

    I would like to learn how this problem would be fixed My Guess - The Function at the end starts task that was supposed to be put in the beginning but the function doesn't have a task to do at the end so it crashes at "debugTask->startTask()".

    Making it Work(copied some code from release) image

    Debug 
    opened by whol-hoopa 1
  • Allow minimize / maximize widgets

    Allow minimize / maximize widgets

    Is your feature request related to a problem? Please describe.

    Having multiple widgets is very useful to analysis binaries. Especially analyzer can view both disasm code and decompiled code. However, code blocks can be very huge therefore the monitor can't display them all. An example of 1920x1080 screenshot image

    Describe the solution you'd like Having a feature that allow minimizing widgets, so users can simple "hide" it when they need more space on the monitor. It's similar to vscode:

    1. The widgets are in "normal" mode image
    2. Hide the "bookmark widget" therefore "Search" widget has more space to display data

    image

    Describe alternatives you've considered

    Double click on widget's title will maximum it, double click on it again restore previous size

    Additional context

    IMO, the advantage of this method is viewer don't have to remove, then add widgets again and again. And it could be very useful if user sets multiple widgets in 1 position (multiple tabs)

    opened by dmknght 0
  • stm8

    stm8

    Is there any information how to decompile stm8 binaries with cutter? I dont see any stm8 cpu but there was a plugin in redare2 so should be possible i thought. Perhaps someone can take me by the hand and lead me. There is a module for ghidra on github but i cant make it work.

    opened by eliasmagn 0
  • Publish a `winget` maniphest.

    Publish a `winget` maniphest.

    Since choco is getting shittier and outdated, and windows seems serious about its own package downloader discased as package manager aka. winget Could we pretty please have a winget-pkg manifest published for the Coutter. It would greatly improve M$ user experience since winget doesn't requires admin privileges to work and its pkg base is up to date'ier compared to choco now. _btw. Tired contacting on your telegram channel, but its no more 😢

    opened by bartoszek 4
Releases(v2.1.2)
  • v2.1.1(Sep 10, 2022)

    This is a hotfix release built on top of Rizin 0.4.1.

    Changes and Fixes

    • Generate and deploy a real source tarball including submodule contents (Fix #2878) (#3036)
    • Fix build on 32-bit systems. (#3032)
    • Do not check "Built from source" in bug report template by default.
    • Memory leak fix in basic block highlighter.
    • Construct and destruct CutterCore singleton locally (Fix #2704) (#2994)
    • Remove direct download from update check (#2989)
    • Update rizin to stable v0.4.1
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.1.1-Linux-x86_64.AppImage(174.71 MB)
    Cutter-v2.1.1-macOS-arm64.dmg(94.44 MB)
    Cutter-v2.1.1-macOS-x86_64.dmg(96.45 MB)
    Cutter-v2.1.1-src.tar.gz(10.03 MB)
    Cutter-v2.1.1-Windows-x86_64.zip(116.45 MB)
  • v2.1.0(Jun 26, 2022)

    This version of Cutter is built with Rizin 0.4.0

    Additions

    • Adds signatures widget for managing FLIRT signatures
    • Supports and bundles SigDB, a library of FLIRT signatures for commonly found libraries sigdb screenshot
    • Bundles the new Yara plugin to apply and create yara rules yara screenshot
    • Bundles Apple Swift demangler swift demangler screenshot
    • Adds option to fill missing bytes with nops when editing an instruction instruction patched with nops screenshot
    • Adds hexeditor option to write hex bytes hexeditor screenshot
    • Adds option to add comments directly from hexdump widget hexdump comment screenshot
    • Uses RzAnnotatedCode with JSDec for colored output with semantic information jsdec screenshot
    • Adds double click to seek to global variable in decompiler widget
    • Adds report issue button in "About"
    • Many internal rizin commands has been translated to their C equivalent
    • Enables console redirection on Windows

    Bugfixes

    • Adds missing Rizin headers in Python bindings
    • Fixes gdbserver segfault
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.1.0-Linux-x86_64.AppImage(149.21 MB)
    Cutter-v2.1.0-macOS-arm64.dmg(94.45 MB)
    Cutter-v2.1.0-macOS-x86_64.dmg(94.94 MB)
    cutter-v2.1.0-Windows-x86_64.zip(116.21 MB)
  • v2.0.5(Jan 14, 2022)

  • v2.0.4(Nov 24, 2021)

    Additions and Changes

    • Rizin updated to 0.3.1
    • Added labels above analysis slider (#2809)
    • Preview tooltip coloring refinements (#2799)
    • Add option to disable preview tooltip (#2795)

    Bugfixes

    • Fix Crashes on Haiku when not starting from a terminal
    • Section information fixed by porting to Rizin API (#2785)
    • Fix computing hashes and entropy of the file
    • Fix removing strings by setting as code (#2803)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.0.4-x64.Linux.AppImage(102.71 MB)
    Cutter-v2.0.4-x64.macOS.dmg(49.89 MB)
    cutter-v2.0.4-x64.Windows.zip(61.85 MB)
  • v2.0.3(Sep 25, 2021)

    Along with many bugfixes and updates to make best use of Rizin 0.3.0, this release also brings a brand new heap viewer widget for glibc, developed as part of Google Summer of Code by @PulakIIIT: https://rizin.re/posts/gsoc-2021-summary/#pulak-heap-viewer-for-cutter

    Additions and Changes

    • Debug: Heap viewer widget for glibc
    • Rizin, rz-ghidra and jsdec updated to 0.3.0 with changes for compatibility.
    • Various improvements for native macOS UI (#2776)
    • Many internal changes switching from error-prone rizin commands to C API
    • CI and Linux builds: use Ubuntu 18.04 as oldest supported build system (#2736)

    Bugfixes

    • Fix Decompiler Copy Shortcut (Fix #2773, #2778)
    • Fix Restoring "Show Disassembly as" in Preferences (Fix #2726, #2748)
    • Complete Color Theme Lists (Fix #2672) (#2752)
    • macOS: Fix Versions in Info.plist (Fix #2679) (#2740)
    • Debug: Fix continue until main not being enabled in certain cases (#2727)
    • Debug: Fix attaching to a process with no file opened (#2727)
    • Fix a crash when printing disassembly arrows (#2688)

    Removals

    • Type Link features removed due to unreliability, in light of global variables coming soon (#2775)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.0.3-x64.Linux.AppImage(121.98 MB)
    Cutter-v2.0.3-x64.macOS.dmg(49.93 MB)
    cutter-v2.0.3-x64.Windows.zip(61.89 MB)
  • v2.0.2(Apr 25, 2021)

  • v2.0.1(Apr 10, 2021)

    This release updates Rizin to 0.2.0 and brings a few additional fixes on top of Cutter 2.0.0.

    Known Issues

    • Windows build can't load certain resource #2667

    Changes

    • Updated Rizin to 0.2.0
    • Updated jsdec to 0.2.0 and rz-ghidra to 0.2.0
    • Fix path when building appimage, caused by #2574
    • Set macOS deployment target to 10.14 Mojave for compatibility. (#2650)
    • Removed build.sh (#2654)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.0.1-x64.Linux.AppImage(97.55 MB)
    Cutter-v2.0.1-x64.macOS.dmg(49.55 MB)
    cutter-v2.0.1-x64.Windows.zip(61.54 MB)
  • v2.0.0(Mar 29, 2021)

    This is the first official release of Cutter since its backend has been changed from radare2 to Rizin. Last r2 compatible commit can be found at d813b7a, there are no plans to further maintain r2 compatible branch by Cutter developers.

    This version of Cutter is built with Rizin 0.1.1.

    The accompanying blog post highlights some of the features below in detail: https://cutter.re/cutter-2.0

    Features

    • Support new Projects in Cutter that will allow saving and opening project files.
    • Add a command line flag for loading projects #2606
    • Improve the workflow of renaming functions, flags and more #2468
    • Improve the remote debug dialog #2472
    • Add reverse debugging support. (Note that debugging is still in a preview state)
    • Support trackpad pinch gesture #2453
    • Add comment column to multiple table views #2441
    • Add option for displaying basic block address at the start of each block in CFG #2482
    • Reworked disassembly arrow drawing #2559
    • Add a preview-on-hover functionality in disassembly widget #2459

    Platform compatibility fixes:

    • Fix build on CentOS 7 with GCC 4.8 #2492
    • Haiku OS build #2485
    • Note: there is no official native macOS M1 build but most parts of Cutter, except debugging, work fine using Rosetta2. Building Cutter natively for arm64 on M1 from source is however fully supported.

    Bugfixes

    • Fix macOS release package not running without having gettext installed from homebrew. #2547 #2474 #2456 #2447 #2428
    • Resolve bug with line highlighting #2218

    Build system, packaging and development changes

    • The default build options changed to use bundled Rizin. If you are a package maintainer see https://cutter.re/docs/building.html#making-linux-distribution-specific-packages
    • The root CMake file is now located at the root of the repository instead of the src/ directory. This slightly changes the build instructions
    • Fully transition to CMake as the only build system. Remove qmake and meson projects.
    • Large parts of packaging logic moved from CI scripts to being done directly by build system.
    • macOS release package is now ad-hoc signed, this should help with the running of the debugger. It doesn't help with developer identity warning when opening the package or debugging system or AppStore programs not marked as debuggable (just like any other debugger regardless of how it's signed).
    • Development has switched to using clang-format for code formatting.
    Source code(tar.gz)
    Source code(zip)
    Cutter-v2.0.0-x64.Linux.AppImage(109.73 MB)
    Cutter-v2.0.0-x64.macOS.dmg(51.01 MB)
    Cutter-v2.0.0-x64.Windows.zip(62.91 MB)
  • v1.12.0(Sep 3, 2020)

    Highlights

    Decompiler

    In this release, we introduce major improvements to the Decompiler feature in Cutter. These improvements couldn't be made without the help of our team member and GSoC student @NirmalManoj :clap:

    • Context menu interactions with the decompiler are now context sensitive, only relevant menu items are shown and they applied to the item that was clicked
    • Decompiler based Syntax Highlighting in the Decompiler widget (old highlighting mode can be chosen in appearance options)
    • Support opening multiple Decompiler widgets at the same time. Each of the instances can be set to show different decompiler (Ghidra, RetDec, r2dec, ...) and different functions.
    • Make the current-address synchronization consistent with rest of widgets

    Known Limitations

    • The new features in the Decompiler work best with r2ghidra, not all of them are implemented for r2dec
    • Some hacky features, like instruction patching, that were available in the previous context menu are not available in the new one and might be added in the future.
    • Decompiling large functions using r2ghidra causes UI to freeze temporarily

    To read the full list of changes, check our blog post: Improving Decompiler Widget - GSoC Project

    Radare2

    • Cutter 1.12.0 depends on radare2 4.5.1

    Other

    • Support analysis after opening the file
    • Configurable analysis options from the Preferences widget
    • Local variables X-Ref view

    Full list of commits since previous release available here: https://github.com/radareorg/cutter/compare/v1.11.0...v1.12.0

    Thanks

    The success of this release couldn't be achieved without the help and time dedicated by many contributors which are new to the Cutter family. We appreciate the work and honored to welcome our new contributors: @Surendrajat, @ocastejon, @sagcan, @DX-MON, @kohnakagawa, @7h3qu1rkyb1t, @DeleteXso, @polaris

    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.12.0-x64.Linux.AppImage(103.52 MB)
    Cutter-v1.12.0-x64.macOS.dmg(72.30 MB)
    Cutter-v1.12.0-x64.Windows.zip(62.41 MB)
  • v1.11.1(Aug 13, 2020)

    Bug Fixes

    • Include r2dec decompiler in Windows build
    • Sort items in Resources widget by numeric values instead of numbers misinterpreted as strings #2308
    • Fix custom color themes not working correctly #2376
    • Fix a crash when opening the theme editor #2359
    • Update r2dec, includes https://github.com/radareorg/r2dec-js/commit/ff0d57e5c8e094ed4ad1a3bde9fd0f648ba5bb7f fixing common r2dec crash when processing Windows executables

    See full list of changes here

    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.11.1-x64.Linux.AppImage(103.03 MB)
    Cutter-v1.11.1-x64.macOS.dmg(72.19 MB)
    Cutter-v1.11.1-x64.Windows.zip(62.27 MB)
  • v1.11.0(Jul 24, 2020)

    Features

    Graphs

    • Major improvements to graph layout algorithms (#2207, #2255, #2246)
    • New Graph widgets: Call-Graph, Global Call Graph, Import Graph and more (#2273)
    • Support Horizontal Graphs (#2234)

    Layout

    • Support saving and loading multiple UI layouts (#2172)
    • Add UI for managing layouts (#2211)

    Others

    • Expose asm.reloff (#2243) and asm.reloff.flags (#2244) in Preferences
    • Command line option to open a file in Write mode (#2216)
    • Add menu options for changing IO mode (#2187)
    • Add pci to hexdump widget (#2219)
    • Toggle Console Widget (Ctrl + ` and :) and clear output (Ctrl + L) shortcuts (#2213)
    • Implement editor for .cutterrc initialization file - an easy way of saving r2 options that aren't otherwise exposed (#2162)

    Radare2

    • Update radare2 to its newest release (v4.5) and fix renamed configuration variables. (#2288)
    • Improved analysis

    Documentation

    • Introducing improved Contribution Guidelines (#2293)
    • Add documentation for TempConfig (#2221)Update Cutter compilation documentation (#2238)
    • Setting up development environment and IDE comparison (#2290)

    Known issues

    • R2dec isn't included in Windows package.
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.11.0-x64.Linux.AppImage(103.03 MB)
    Cutter-v1.11.0-x64.macOS.dmg(72.19 MB)
    Cutter-v1.11.0-x64.Windows.zip(61.95 MB)
  • v1.10.3(May 8, 2020)

    New features and improvements since 1.10.2:

    • Update radare2 to its latest release 4.4.0
    • Patching and Writing features added to Hexwidget
    • Flag and comment indicator in Hexwidget
    • Enhanced Debug experience
    • Official Appimage build compatibility with Ubuntu 16.04
    • Light theme improvements
    • Improved performance

    Windows:

    • Updated Qt. If Cutter doesn't start try installing the bundled Microsoft Visual C++ Redistributable.

    Build system changes:

    • Support for CUTTER_USE_BUNDLED_RADARE2=ON on windows
    • Improve usability of CMake for preparing Linux packages
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.10.3-x64.Linux.AppImage(76.17 MB)
    Cutter-v1.10.3-x64.macOS.dmg(69.85 MB)
    Cutter-v1.10.3-x64.Windows.zip(60.57 MB)
  • v1.10.3-pre2(May 1, 2020)

  • v1.10.2(Mar 10, 2020)

    Edit:

    Please note: Users encountered issues with the debugger in this release. We're looking into fixing it. If you don't intend to use the debugger, use this release. If yes, please use the previous release, v1.10.1 or the newer v1.10.3. We're sorry for the inconvenience and will release a fixed version soon.


    This is a minor release to bump the version of radare2 to its latest release.

    radare2

    • Update the radare2 submodule to its latest release

    Additions

    • Add bindings for context menus in Python API
    • Show cleaner function names on the disassembly context menu
    • Display Authentihash and Sha256 for Windows PE files
    • Add scaling and background transparency for Graph export

    Bug Fixes

    • Fix crash when using theme editor
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.10.2-x64.Linux.AppImage(74.41 MB)
    Cutter-v1.10.2-x64.macOS.dmg(68.00 MB)
    Cutter-v1.10.2-x64.Windows.zip(68.78 MB)
  • v1.10.1(Feb 1, 2020)

    📥 Take me to the download links

    Highlights

    ⭐ r2dec decompiler is now shipped by default on all platforms ⭐ radare2 is updated to its newest version - v4.2.1 ⭐ Major performance improvements across Cutter ⭐ Remove prefixes from flags and functions to make them prettier ⭐ New dialog to set and edit breakpoints, including hardware and conditional breakpoints ⭐ Improved API for plugin authors ⭐ Faster and better telescoping for Stack and Registers ⭐ Various bug fixes and small improvements

    The Arctic World Archive

    On February 2, 2020, GitHub will capture a snapshot of every active public repository, to be preserved in the GitHub Arctic Code Vault. This data will be stored on 3,500-foot film reels, provided and encoded by Piql, a Norwegian company that specializes in very-long-term data storage. The film technology relies on silver halides on polyester. This medium has a lifespan of 500 years as measured by the ISO; simulated aging tests indicate Piql’s film will last twice as long.

    csm_Svalbard_Global_Seed_Vault_f25d850445

    Additions

    • Bundle r2dec into macOS and Linux Builds (#2023, #2033)
    • Show pretty names for flags and functions (#2014)
    • Add realname and libname to Flags and Imports widgets (#2024)
    • Add Breakpoint editor dialog (#1975)
    • Add more breakpoint editing options (#1967)
    • Imporve Register references widget (#2038)
    • Add API for Plugins to extend context menu (#2029)
    • Add a custom telescoping function and improve StackWidget's output (#1990)
    • Make breakpoints available outside of debug (#2027)
    • Add virtual-size to section widget (#2030)
    • Add sha256 and crc32 to the hexdump widget (#2006)
    • Patching: add a ';' delimiter and responsive dialog box, multiple instructions can be patched (#1984)
    • Improve graph HighDPI scaling (#1963)
    • Threads widget now shows the current location in code instead of the thread's path (#15771)

    Fixes and Changes

    • Update radare2 to 4.2.1 (#2040)
    • Simplify and move Plugin context menu GUI code out of core. (#2039)
    • Make user plugin path in settings a link (#2034)
    • Improve default line-width values on graph (#2026)
    • If available, set r2ghidra the default decompiler (#2007)
    • Improve flag and string widget performance (#2021)
    • Set zoom factor when opening appearance settings. (#2003)
    • Refresh monospace font after it gets reset by style or font change. (#2002)
    • set Style tab to default view (#1986)
    • Fix debug not working with paths that have a space in them (#1978)
    • Refactor breakpoint validation (#15754)
    • Fix multithreaded breakpoint behavior in linux (#15782)
    • Unset breakpoints if continue was interrupted (#15772)
    • Fix crash caused by rebasing a file without sections (#15792)
    • Fix windows process info not showing the correct path for child processes (#15741)
    • Fix function variable information rebasing (#15726)

    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.10.1-x64.Linux.AppImage(74.38 MB)
    Cutter-v1.10.1-x64.macOS.dmg(67.99 MB)
    Cutter-v1.10.1-x64.Windows.zip(68.75 MB)
  • v1.10.0(Dec 20, 2019)

    This release comes with the long promised native and remote debugging support. Celebrate the end of the year with Cutter 1.10!

    Currently supported features

    • Multiplatform native debugger
    • Remote debugging using GDB
    • Remote kernel debugging using WinDbg
    • Attaching to a running process
    • STDIO interaction with debugee
    • Support for multi-threading
    • Stack and Registers inspection
    • Backtrace
    • Memory map

    And much more!

    Planned and in-progress debug features

    • Reverse debugging
    • SIMD register display
    • Hardware breakpoints support
    • Conditional breakpoints
    • Signal handling customization
    • Performance improvements
    • Integration with rarun2 library preload
    • Standalone DLL debugging
    • WinDbg Ethernet protocol support

    Note that any kind of contribution is welcome. We are eager to hear your feedback for more debug improvement ideas!

    Known issues

    • Linux breakpoints only work if you are selecting the thread that will hit the breakpoint
    • Function stack variable comments aren't relocated in GDB remote debug
    • Cutter's interface changes size when debug is started/stopped
    • macOS debugging doesn't work without signing the binary

    Please give it a try and let us know what you think :)

    Full Changelog

    Additions

    • Add -F command line option to specify Format (#1946)
    • Define string of length N in address (#1915)
    • Add startRemote to the debug dropdown menu
    • Add a signal for widget rebasing and switch to oodf for remote debug rebasing (#1913)
    • Add debug dialogs (#1903)
    • Add processes widget for kernel and child debugging (#1894)
    • Stdin redirection for locally debugged processes (#1892)
    • gdbserver and windbg remote debugging support (#1874)
    • ThreadsWidget and r2 debugging fixes (#1846)
    • Pressing Enter in disassembly will jump to the desired location (#1910)
    • Add menus to seek backward and forward buttons. (#1889)
    • Add Adikso's Midnight Theme (#1895)
    • Highlight in red changes in the Hexdump Widget (#1880)
    • Add instruction highlight in graph view (#1879)
    • Add highlight to hexdump (#1862)
    • Redirect stdout/stderr to Console Widget (#1821)
    • Add shortcuts to breakpoints widget (#1834)
    • Add common zoom action for widgets using font from configuration (#1813)
    • Implement parsing selected bytes as Yara (#1818)
    • Add search color option feature + sort color options by name (#1803)
    • Add information from aai to Dashboard, fixes #1571 (#1792)
    • Add addressable item context menu to stack widget (#1779)
    • Add more shortcuts to DisassemblyContextMenu (#1782)
    • Graph export without graphviz (#1773)

    Fixes and Changes

    • Moved the debug exit dialog to DebugActions
    • Update radare2 to 4.1.1 - reantull
    • Use events to notify the user about the debugee's death
    • Fix remote debug crash after the first session
    • Prevent the update of some widgets while debug task is in progress to avoid freezing
    • Switch to registerChanged from seekChanged where possible
    • When using add breakpoint button add it not toggle. (#1953)
    • Workaround for new debug widgets being opened in normal mode. (#1950)
    • Show debug widget menu under Debug. (#1949)
    • Highlight Breakpoints and PC in decompiler (#1948)
    • Fix Segfault on Quit after Debug/Emulation (#1943)
    • Fix automatic function naming (#1942)
    • Increase input field size when resizing NativeDebugDialog. (#1930)
    • Fix formatBytecount's sizes (#1928)
    • Separate the search widget's boundaries for debug and non-debug modes
    • Replace changeDebugView and changeDefinedView with toggleDebugView
    • Removed disabling of startEmul to show the restart debug option when emulating
    • Remove metadata from inkscape icons
    • Remove auto scroll from registerRefs widget
    • Support multi-theme icons on debug
    • Improve debug icons
    • Show icon in menus
    • Use uppercase for program counter name
    • Make labels selectable by mouse
    • Disable auto scroll in stack widget
    • Rename backtrace func name column
    • Auto-select text in EditInstructionDialog
    • Improve RegistersWidget grid UI
    • Improve stack widget ui
    • Remove column of active thread in ThreadsWidget
    • Remove vertical numbers in debug widgets
    • Change label to suspend process
    • Detach Cutter interface from debug command execution (#1857)
    • Look for sym.main instead of main 'cause latter is not rebasing in PIEs
    • Fix PIE debug
    • Hides the ContinueUntilMain button if there is no flag called main
    • Fixes issues with reset layout in debug mode
    • Fix emulation not working after a debugging session
    • Improve seek backward and outside of function in Decompiler widget (#1916)
    • Fix 1756: Disable seek when selecting text on Decompiler Widget (#1917)
    • Coverity Fixes (#1912, #1907)
    • Replace hardcoded system plugin directories with list from Qt. (#1814)
    • Added a temporary fix to allow backslashes names (#1899)
    • Improve compatibility with cmake 3.10. (#1882)
    • Disable asm.lines and asm.bytes in XRefs Preview (Fix #1339) (#1893)
    • Fix Strings Widget for changes in radare2 (#1885)
    • Change focus order in SetToDataDialog. (#1873)
    • Hide and resize hexdump sidebar with heuristics (#1798)
    • Refactored qhelpers AbstractItemView item select (#1850)
    • Fix decompiler widget not updating xrefs to decompiled function (#1851)
    • Automatically select the first line of xref (#1849)
    • Deduplicate seek forward and backward action. (#1844)
    • Show bytes has been renamed and moved (#1841)
    • Replacing all QRegExp with QRegularExpression (#1820)
    • Fix graph zoom reset and use same font size as everything else. (#1835)
    • Fix Native Plugin Loading for CMake (#1829)
    • Fix refresh after renaming imported function (#1828)
    • Improve compatibility with cmake 3.5 and QT 5.5-5.11. (#1805)
    • Allow local development using Docker (#1806)
    • Fix #1802 (newly created graph docks have no title) (#1815)
    • Restore breakpoint listing. (#1811)
    • Use AddressableItemContextMenu in Registers widget. (#1794)
    • Improve about dialog (#1799)
    • Fix crash when using graph shortcut (#1801)
    • Fixed zoom shortcuts to something more generic (#1781)
    • Fix "ta" commands after radare2 command refactoring #1774 (#1775)
    • Fix Segfault on Theme Editor Preview Click
    • Fixed TypeWidget font to monospace. (#1755)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.10.0-x64.Linux.AppImage(74.32 MB)
    Cutter-v1.10.0-x64.macOS.dmg(67.64 MB)
    Cutter-v1.10.0-x64.Windows.zip(68.79 MB)
  • v1.9.0(Sep 6, 2019)

    This release comes bundled with the r2ghidra Decompiler. Enjoy r2con 2019!

    Additions

    • Bundle r2ghidra-dec
    • Select highlighted variable in EditVariablesDialog if possible. (#1727)
    • Allow seeking in unsynchronized widgets using 'g'. (#1731)
    • Decompiler Auto-Refresh (#1724)
    • Make Decompilation asynchronous (#1721)
    • Add context menu entries for target address (#1712)
    • Add context menu to PseudocodeWidget (#1702)
    • Graphviz based graph layout (#1691)
    • Graph edge highlight (#1693)
    • Added QtVersion inside AboutDialog
    • Updated DisasWidget zoom shortcuts
    • Remember last selected Decompiler
    • Add Plugin Interface for Decompilers
    • Add a generic Decompiler interface and remove pdc (#1659)
    • Add scrolling to DisassemblyWidget left panel
    • Sync PseudocodeWidget with Seek (#1648)
    • Use KSyntaxHighlighting (#1645)
    • Add Loading ~/.cutterrc (#1644)

    Fixes and Changes

    • Rename PseudoCode widget to Decompiler (#1728)
    • Center Rename Dialogs (#1743)
    • Update radare2 to 3.8.0
    • Fix unnecessary Auto-Decompile on Seek (#1734)
    • Read global offset when opening a new hexdump widget. (#1732)
    • Common behaviour for lists with items that have address (#1700, #1718)
    • Increase asm.tabs indention
    • Fix Main Task Synchronization (#1723)
    • Fix Disassembly widget focus detection. (#1720)
    • Refactor Decompiled Code Structure (#1717)
    • Fix Segfault after changing Decompiler (Fix #1705) (#1715)
    • Restore cursor after making empty selection. (#1714)
    • Don't interpret data as code in xrefs from table. (#1710)
    • Improve InitialOptionsDialog and modify UI terminology for analysis (#1669)
    • Fix out of bounds memory access. (#1697)
    • Fixed file name display in new file dialog (#1675)
    • Allow returning to top level in sdb widget. (#1696)
    • Fix memory leak in sdbListKeys. (#1695)
    • Fix ClassesWidget sorting by vtable offset (#1686)
    • Transfer zoom events from overview to main graph. (#1685)
    • Use bundled radare2 as ExternalProject in cmake (#1674)
    • Don't use scr.html in CommandTask (#1683)
    • Fix arrow offset when scrolling with arrows or zooming in. (#1677)
    • Docker: Move to alpine; Use multistage building
    • Rewrite raise memory widget functionality (#1654)
    • Unify preferences layouts (#1670)
    • Use more specific stylesheet selecters. (#1668)
    • Adjust arrow offset calculation.
    • Make penSizePix thinner
    • Improve arrow widget
    • First implementation of new disassembly widget
    • Make Syntax Highlighter react to Theme Changes (#1650)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.9.0-x64.Linux.AppImage(73.32 MB)
    Cutter-v1.9.0-x64.macOS.dmg(67.13 MB)
    Cutter-v1.9.0-x64.Windows.zip(69.52 MB)
  • v1.8.3(Jul 9, 2019)

    Additions

    • Updated radare2 to 3.6.0
    • Case Insensitive ASM search (#1612)
    • Improve hex selection painting and right click behavior. (#1602)
    • Implement Editing and Viewing of Types in the Types Widget (#1597)
    • Improve Graph Overview Fill and Node Colors (#1596)
    • Implement Seek to start/end of function Shortcuts (#1589)
    • Basic Block Highlight (#1533)
    • Hide duplicate and cross-function edges. (#1582)

    Fixes and Changes

    • Rename dialog text is now preselected (#1635)
    • Disable asm.movlea by default (#1630)
    • Fix asm.describe typo (#1629)
    • Move graph header to GraphWidget. (#1628)
    • Initial refactoring and improvement for Assembly Options Dialog (#1627)
    • Disable modification buttons for builtin color themes (#1615)
    • Fix crash on theme edition (#1614)
    • Fix Console Font for some Platform Themes (#1610)
    • Don't raise unsynced widgets. (#1609)
    • Remove Memory Widget Pointers and Toggle Actions
    • Refactor Layout Save and Restore Feature (#1538)
    • Use correct character width for hexwidget (#1607)
    • Reset breakpad to buildable commit (#1605)
    • Fix def. Cutter specific Colors for Custom Themes (#1606)
    • Interface theme and theme features refactoring (#1598)
    • Combine Set-As menu items (#1601)
    • Remove default Shiboken2 executable in qmake proj (#1600)
    • Sync hex.pairs eval to "Bytes as pairs" in Hexdump (#1586)
    • Added natural registers sorting in RegistersWidget (#1591)
    • Fix memory leaks found by ASAN. (#1590)
    • Make the shadow selection wider in hex (#1584)
    • Update hex side panel only when visible. (#1578)
    • Fix PNG iCCP errors (#1583)
    • Fix QToolbutton color and offset in light theme. (#1579)
    • Remove tab style modifications in native style sheet. (#1565)
    • Lock Core in CutterCore::loadScript() (#1581)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.8.3-x64.Linux.AppImage(59.89 MB)
    Cutter-v1.8.3-x64.macOS.dmg(53.18 MB)
    Cutter-v1.8.3-x64.Windows.zip(56.09 MB)
  • v1.8.2(May 20, 2019)

    Additions

    • Updated radare2 to 3.5.1
    • New Hexedit (#1516)
    • Save Console Wrap in QSettings (#1550)
    • Added hotkeys for undo and redo seek (#1514)
    • Added advanced options aao and avrr to the initial options dialog (#1513)
    • Added X-Refs context menu item for Flags Widget (#1499)
    • New Color Theme Editor (#1461)
    • Added Light Theme (#1486)
    • Added Console Autocompletion from radare2 (#1489)
    • Added Ctrl-Shift-C shortcut (#1476)
    • Show a tooltip with Asm\Hex preview on search hits (#1480)
    • Added Option to toggle Line Wrap in Console (#1466)

    Fixes and Changes

    • Keep Console Font on Theme Change (#1567)
    • Remove vertical padding in QMenuBar in Light Theme (#1566)
    • Improve Color Theme Copy Feature (#1560)
    • Add Settings and Color Theme Versioning (#1557)
    • Take in to account selected instruction when moving view offset. (#1551)
    • Make code compatible with QT 5.9 (#1553)
    • Fix XrefsDialog Preview Font (#1548)
    • Fix non-integer Font Metrics in Graph (#1545)
    • Fix io plugin listing. (#1544)
    • Remove unnecessary Console Messages (#1546)
    • Fix Sections Size in Visualization
    • Auto Resize Visualization in SectionsWidget
    • Add Permissions Column to SectionsWidget
    • Make gui.dataoffset color adapt to Native
    • Always enter mouse drag mode when clicking on overview widget. (#1539)
    • Refresh overview even when function doesn't change (#1541)
    • Fix Bindings of Signals (Fix #1482) (#1530)
    • Seperate Widget showing grid of bytes from rest of the hexdump panel. (#1504)
    • Fix Shortcuts of DisassemblyContextMenu (#1510)
    • Make grouped dock dragging optional. (#1506)
    • Invalidate overview graph cache when changing color. (#1502)
    • docker/Dockerfile: Make build noninteractive (#1500)
    • Use API for Functions (#1498)
    • Only require Shiboken2 and PySide2 Version up to Minor (#1491)
    • Delete Extra Widgets on Close (#1490)
    • Use same font size for all text in hexdump widget. (#1485)
    • Fix highlighting bugs in DisasmWidget (#1477)
    • Help not getting lost in empty parts of graph. (#1467)
    • Show context menu with non block specific graph actions everywhere. (#1465)
    • Show recent files ordered by opening time. (#1462)
    • Improve project choose page (#1451)
    • Start placing edges from centre. (#1460)
    • Fallback to current offset in LinkTypeDialog (#1458)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.8.2-x64.Linux.AppImage(59.23 MB)
    Cutter-v1.8.2-x64.macOS.dmg(52.68 MB)
    Cutter-v1.8.2-x64.Windows.zip(55.62 MB)
  • v1.8.1(Apr 14, 2019)

    After the great 1.8.0 release, this one concentrates on bugfixes and minor improvements.

    Additions

    • Update radare2 to 3.4.1 (#1420)
    • Add automatic Crash Handling (#1157, #1439, #1443, #1447, #1449)
    • Navigate through graph view with arrows (#1441)
    • Implement middle mouse button panning. (#1433)
    • Make plugins path selectable and bold (#1422)
    • Load plugins from app dir on Windows (#1408)
    • Implement Getter for MainWindow's menus (#1418)
    • Enable dock grouped dragging when available. (#1402)
    • Add emu.str in Preferences->Metadata (#1369)
    • Add compiler information to dashboard (#1385)

    Fixes and Changes

    • Refactor Refresh and Display of Overview (#1453)
    • Fix Segfault with Extra Widgets
    • Removed max bbsize analysis option (#1424)
    • Fix crash in StringsWidget::on_actionX_refs_triggered. (#1450)
    • Focus on visible disasm or graph (#1444)
    • fix compile ubuntu gcc7 (#1442)
    • Use Python stable ABI >= 3.5 (#1426)
    • Replace GraphView::useCache with dirty flag (#1437)
    • Bring back Launch Script for macOS (#1438)
    • Fix GraphEdge initialization in DisassemblerGraphView (#1436)
    • Rewrite block sorting and placment so that unreachable blocks are processed. (#1428)
    • Minor Header Optimizations (#1429)
    • R2PluginsDialog: Sort plugins by name in ascending order (#1431)
    • Meson: remove workaround for qtmain lib (#1430)
    • Make graph layout more failure resistant. (#1427)
    • Separate graph layout code from GraphView. (#1414)
    • Take pixel ratio into account for graph cache. (#1405)
    • Get color for optimization (#1404)
    • Init Layout after loading Plugin UI (#1407)
    • Xrefs select top item (#1401)
    • Do not update sectionWidget position outside valid range. (#1399)
    • Fixed not switching Disassembly to not opened Graph view using (#1370)
    • build.sh: Check for lrelease-qt5 (#1396)
    • Renamed asm.bbline to asm.bb.line (#1400)
    • Fixed overview basic block highlighting (#1393)
    • Remove Jupyter Integration (#1398)
    • Improve hexdump width calculation. (#1389)
    • Fixed a few issues with the XRef dialog (#1384)
    • Delete all PySide2 QObjects before Py_Finalize() (#1386)
    • Add CutterPlugin::terminate() (#1372)
    • Build an app bundle on macOS (#1355)
    • DisassemblerGraphView zooming fix (#1354)
    • Feature/dialogs optimization (#1360)
    • Fix a bug regarding highlighting the words in Graph
    • Fix crash because of mixing debug and release CRT. (#1361)
    • Extend FindPySide2.cmake and FindShiboken2.cmake for current versions (#1358)
    • Fixed a bug related to reset_settings (#1349)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.8.1-x64.Linux.AppImage(58.99 MB)
    Cutter-v1.8.1-x64.macOS.dmg(52.57 MB)
    Cutter-v1.8.1-x64.Windows.zip(55.53 MB)
  • v1.8.0(Mar 20, 2019)

    Cutter 1.8.0

    This release is one of the biggest so far, bringing a full Python API for creating Plugins and many improvements to the Graph Widget, such as the Graph Overview, along with lots of other improvements and fixes.

    Notice that in this version we dropped the support for 32-bit binaries. We also made improvements to our configuration files, this might reset your current configurations.

    Want to build your own Cutter plugin? Check out our documentation: https://cutter.re/docs/plugins.html

    Additions

    • Add Support for Python Plugins
    • Add Graph Overview
    • Graph scrolling forever (#1195)
    • Add Plugins Section to Preferences
    • Add configurable graph overview node color (#1259)
    • Auto update check (#1235)
    • Added feature to link a type to an address (#1219)
    • Add feature to apply structure offset and fix some issues in EditVariablesDialog (#1215)
    • Added a BasicBlock highlighting API
    • Show sizes of structs and unions (#1203)
    • Implement highlight in Types dialog (#1186)
    • Added load, delete and export features in the Types Widget (#1158)
    • Added a checkbox in the preferences dialog for asm.indent (#1175)
    • Add support for listing and editing Anal Classes in ClassesWidget
    • Adding #685 (Adding a report issue button) (#1165)
    • Added some of the features mentioned in the Types Widget Project. (#1153)
    • Added 'asm.xrefs' option in preferences dialog (#1150)
    • Added support for automatically saving and opening recent folder (#1149)
    • Added dialog to show infinite progress-bar while running script (#1145)

    Fixes and Changes

    • Updated radare2 to 3.3.0 (#1231)
    • Fix changing Variable Name in EditVariablesDialog
    • Fixes regarding saving and restoring of the Widget Layout (#1308)
    • append layout to OpenFileDialog, so the dialog more flexible (#1293)
    • Removed asm.stackptr option because the result is meaningless (#1285)
    • Fix NewFileDialog positioning on macOS
    • Fix NewFileDialog leaking MainWindow
    • Replace red syntax highlighting with blueish color (#1261)
    • Disable aan (#1253)
    • Start using "gui.navbar.seek" color instead of "gui.navbar.err" to show seek cursor (#1244)
    • Fix an infinite loop bug (#1218)
    • Overview does not disappear anymore when it is moved to the same dock as Graph (#1212)
    • Change organizationName and use QSettings:IniFormat (#1213)
    • Fix Segfault when jupyter is not installed
    • Modified some APIs for more consistence
    • Move everything Jupyter related out of PythonManager
    • Fix arch and bits in Hexdump Widget (#1209)
    • Update SyntaxHighlighter.cpp (#1206)
    • Fix a bug which causes segfault when adding another Graph (#1202)
    • Fix FunctionsWidget Tooltip Colors
    • Move HTML Disasm formatting to Cutter
    • AppVeyor: switch to VS2017, Qt 5.12 and disable x86 build (#1184)
    • disable "aan" from advanced options (#1190)
    • Fix graph header resizing (#1189)
    • Fix SDB Browser docking problem and rename the whole thing (#1188)
    • Fix progress bar alignment (#1185)
    • Fixed memory leak and refactored code (#1181)
    • Reordered menu items by alphabetical order (#1178)
    • set ayu default for dark interface (#1174)
    • Fixed AboutDialog leaking (#1168)
    • Improved big blocks rendering performance (#1166)
    • Fixed asm.xrefs checkbox in Asm Options (#1167)
    • Prevent r2 injection when opening a file (#1125)
    • Fix graph blocks rendering optimization (#1164)
    • Force context menu to show shortcuts fix. Closes #1154 (#1163)
    • Dockerfile: Use Cutter from master, merge layers (#1141)
    • Moved type checkbox from windows/info to windows dropdown (#1142)
    • Fix CutterCore::getAllRelocs() for RBTree (#1135)
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.8.0-x64.Linux.AppImage(71.82 MB)
    Cutter-v1.8.0-x64.macOS.dmg(47.36 MB)
    Cutter-v1.8.0-x64.Windows.zip(75.19 MB)
  • v1.7.4(Jan 21, 2019)

    Cutter 1.7.4

    This release improves greatly the performances of the interface.

    Additions

    • Added a Welcome Dialog (#1116)
    • Added RefreshDeferrer to redraw only visible widgets
    • Added 'Copy' context menu option to graph view (#1097)
    • Highlight program counter in Navbar widget (#1095)
    • Implemented click and seek for the address maps in the Section Widget (#1046)

    Fixes and changes

    • Fixed pdJ command results (#1124)
    • Fixed translations deployment for MAC & Linux
    • Fixed overlap qlabel and icon in WelcomeDialog (#1123)
    • Fixed r2 command injection in FunctionsWidget tooltip (#1122)
    • Fixed CutterSeekable isSynchronized() and signal on de-syncing (#1121)
    • Fixed incorrect "(unsynced)" in the graph widget's title.
    • Improved xref widget performances (#1112)
    • Added USE_LIB_MAGIC check to avoid compilation issues
    • Fixed DisassemblyWidget's eventFilter crash (#1111)
    • Fixed a bug with the emulation layout (#1107)
    • Fixed many warnings in DisassemblerGraphView (#1103)
    • Refactored CutterSeekableWidget to CutterSeekable (#1099)
    • Enforce LTR layout (#1102)
    • Removed Fallback for afcf in Graph Header (#1090) (performances)
    • Wrapped Python API
    • Optimized tooltip data retrieving (#1088)
    • Adjust size of each section in the address maps of Section Widget (#1086)
    • Fixed lrelease for Windows (#1055)
    • docker/Dockerfile: Added check for image building (#1054)
    • Improved XREF window size and locations (#1049)
    • Fixed some tiny analysis issues caused by Cutter
    • Made Plugin window bigger for readability (#1044)
    • Set default IO plugin to file:// (#1042)
    • Fixed AppImage Link in README.md
    Source code(tar.gz)
    Source code(zip)
    Cutter-v1.7.4-x64.Linux.AppImage(70.90 MB)
    Cutter-v1.7.4-x64.macOS.dmg(42.69 MB)
    Cutter-v1.7.4-x64.Windows.zip(70.64 MB)
    Cutter-v1.7.4-x86.Windows.zip(64.37 MB)
Owner
Rizin Organization
Rizin is a free and open-source Reverse Engineering framework
Rizin Organization
A FREE Windows C development course where we will learn the Win32API and reverse engineer each step utilizing IDA Free in both an x86 and x64 environment.

FREE Reverse Engineering Self-Study Course HERE Hacking Windows The book and code repo for the FREE Hacking Windows book by Kevin Thomas. FREE Book Do

Kevin Thomas 1.1k Dec 27, 2022
The purpose of these streams is to be educational and entertaining for viewers to learn about systems architecture, reverse engineering, software security, etc., and NOT to encourage nor endorse malicious game hacking.

Memestream This repository holds the code that I develop during my live game "modding" ?? sessions. When I stream, I like to speedrun making a success

Stephen Tong 28 Jul 6, 2022
OverRide - Binary Exploitation and Reverse-Engineering (from assembly into C)

OverRide Explore disassembly, binary exploitation & reverse-engineering through 10 little challenges. In the folder for each level you will find: flag

Anya Schukin 69 Sep 22, 2022
Block Cipher Reverse Engineering: A Challenge by Nintendo European Research & Development

My algorithm cracks NERD HireMe for any output within 1 Second without Brute-Force! Read more if you want to find out how this was accomplished or execute this algorithm yourself on Wandbox - Online C++ Compiler

Alexander Töpfer 58 Nov 15, 2021
Powerful automated tool for reverse engineering Unity IL2CPP binaries

Powerful automated tool for reverse engineering Unity IL2CPP binaries

Katy 2.1k Jan 7, 2023
Resources gathered for reverse engineering the FNIRSI-1013D scope

# FNIRSI-1013D-Hack Resources gathered for reverse engineering the FNIRSI-1013D scope As part of what is on EEVBLOG, resources for the reverse engine

null 75 Dec 25, 2022
A lightweight ARM reverse engineering tool.

eydis A lightweight (basic and slow) ARM reverse engineering tool. I. Requierements macOS/Linux, Basics compiling tools, The SQLite3 + readline framew

Yui Aioi 18 Aug 15, 2022
Info & tools for reverse engineering the M6 smart fitness band

m6-reveng This repo contains information and tools for reverse engineering the $7 M6 smart fitness band. Hardware The SoC (system-on-a-chip) is a Teli

null 41 Dec 26, 2022
Reverse engineering the V831 npu

v831-npu Reverse engineering the V831 Neural Network Accelerator (NNA) Hardware is primarily based off NVIDIA Deep Learning Accelerator(NVDLA) archite

Jasbir 79 Jan 7, 2023
Reverse engineering / documenting the SSC (qcom Snapdragon Sensor Core) or SLPI.

QRTR / QMI sensor daemon Device setup (pmos) Install deps sudo apk add alpine-sdk sshfs eudev-dev qrtr-dev Mount build dir First on host setup USB net

Caleb Connolly 12 Jul 26, 2022
Reverse engineering Genshin Impact anticheat to study how anticheats work on the Windows operating system.

mhyprot2 - Reverse engineering Genshin Impact anticheat for study 1. Demonstration video 2. Screenshots 2.1 Panel 3. Future updates and questions As I

João Vitor 57 Nov 16, 2022
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Jan 3, 2023
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Dec 30, 2022
SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

SDR++ is a cross-platform and open source SDR software with the aim of being bloat free and simple to use.

AlexandreRouma 2.2k Jan 7, 2023
Reverse engineered source code of the engineowning cheat for cod9 (tags, ignore. Fortnite cheat, engineowning, engineowning cracked, cheat cracked, cod cracked cheat, cod cheat source)

engineowning-cod9 Reverse engineered source code of the engineowning cheat for cod9 Cracked by CODEX notinjector = C:\Windows\Release\ .exe drSYS = C:

null 8 Oct 12, 2022
A free and open-source cross-platform application to control your Philips hue compatible lights💡

?? OpenHue ?? A cross platform application to control your Philips hue compatible lights. licensed under the gpl 3.0 license. Currently in super early

BOB450 4 Dec 28, 2022
SomeSmile - a free, open source and not yet cross-platform

SomeSmile - a free, open source and not yet cross-platform Table Of Contents For What? Structure Start Usage Guide How To Build Screenshots End For Wh

SonicTheHedgehog 3 Aug 3, 2022
An open source Zstack3 gateway powered by ESP8266 and CC2652 modules

OpenZ3Gateway An open source Zstack3 gateway powered by ESP8266 and CC2652P modules. One costs less than 60 CNY in China. This repository includes Alt

Chen Yijun 38 Dec 26, 2022
Sourcetrail - free and open-source interactive source explorer

Sourcetrail Important Note: This project was archived by the original autors and maintainers of Sourcetrail by the end of 2021. If you want to know mo

Coati Software 13.1k Jan 1, 2023