Desk log · 584 titles

Mac software news, brief and clear


Binary Ninja program icon
Mac Apps

Binary Ninja 6.0.10601-personal Mac

Updated · Filed by Rosa Delgado

Download (584 MB) Earlier builds

From the photo desk

A security researcher pulls apart a suspicious Mach-O binary they found on a client’s server. They drop the file into Binary Ninja, and within seconds the disassembly appears alongside an interactive control-flow graph. They rename a few obfuscated functions, apply a structure to a blob of data, and begin tracing the code path that reaches out to an unknown IP address.

The platform, developed by Vector 35 Inc., gives analysts and reverse engineers a shared workspace for picking apart compiled code. It reads PE, Mach-O and ELF formats and handles architectures including x86, x86-64, ARMv7, AArch64, PowerPC, 6502, Z80 and MIPS.

What you can do inside Binary Ninja:

  • Disassemble executables and libraries across multiple platforms and architectures
  • Rename variables and functions, apply types, create structures and leave comments
  • Navigate cross-references and explore the control-flow graph interactively
  • Extend the platform through the built-in Extension Manager
  • Run analyses headlessly for batch processing or integration into larger workflows
  • Use the entropy graph to spot packed or encrypted sections at a glance

The interface is the same on macOS, Windows and Linux, so teams can collaborate without switching tools. As of version 6.0.10601-personal, the platform also supports the TMS320C6x architecture and includes a new Binary Similarity feature alongside an MCP server.

Dragging in a packed, unsigned keylogger sample

A threat-intelligence analyst on a macOS security team receives a tip about a keylogger bundled inside a fake PDF reader. The sample arrives as a fat Mach-O binary, unsigned and packed with a custom UPX variant. She drags it straight into Binary Ninja and ignores the default linear view — she opens the entropy graph first. A tall spike between offsets 0x4000 and 0x9000 tells her the payload is compressed. She sets a bookmark on the stub that calls mach_vm_allocate and begins tracing the unpacking routine by single-stepping through BNIL.

Once the real code spills into a newly allocated memory region, she exports the segment, reloads it as a raw binary, and applies the ARM64 architecture. The disassembly view populates with the loader logic. She spots a hardcoded server address stored as four hex immediates, renames the function phone_home, and pivots through cross-references to find the keystroke-capture loop. Three annotations and two structure definitions later, a clean report starts writing itself.

When a second analyst asks for the triage notes, she shares the binary database file — all the labels, comments and type information travel with it. He opens the same file on a Linux workstation, runs a headless analysis pass to rescan with the new Binary Similarity feature, and flags the unpacking stub as a known variant first catalogued eight months earlier. The whole trace-to-signature loop closes in under forty minutes.

Offline reverse engineering from the first launch

Does Binary Ninja work without an internet connection?
Yes. The core disassembler, decompiler and all built-in architectures run entirely offline. You only need a connection the first time you pull extensions through the Extension Manager, or when the MCP server bridges analysis sessions across a local network.

Can I write my own architecture plugin?
The C++, Python and Rust APIs expose the same intermediate language stack the built-in architectures use. You register a new backend, describe the instruction decoding, and lift into BNIL. From there the platform hands you the control-flow graph, the dataflow analysis and the decompiler without extra work. The Extension Manager ships community-contributed backends, but a custom one drops in just like any other plugin.

Is it practical on an Apple Silicon Mac?
The build runs natively on ARM and x86-64, and Vector 35 tuned memory usage considerably in version 6.0. Large ELF files that previously pushed swap now load faster and stay responsive during analysis passes. Analysts who regularly reverse iOS kernelcaches or fat ARM binaries report a noticeable difference compared to Rosetta-translated workflows.

How does patching work in practice?
You can edit assembly inline, write raw bytes in the hex view, apply preset patches, or compile small C snippets with the built-in SCC compiler. Once the patch is applied, Binary Ninja writes the modified binary back out. Some researchers use this to NOP out license checks during triage; others assemble fix stubs directly inside the tool before re-signing the binary.

What if I only need command-line analysis?
The headless mode exposes the same analysis engine without the GUI. It accepts a binary file and a script, runs the full disassembly and decompilation pipeline, and spits out results as JSON, text or a populated database. That fits naturally into CI pipelines that scan nightly firmware builds.

Resurrecting a headerless ARMv7 firmware blob

A vulnerability researcher opens a firmware update extracted from an IoT camera. The file is a raw ARMv7 binary with no headers, so she loads it into Binary Ninja and manually sets the base address and architecture. The linear disassembly appears first — dense, unlabeled, full of branch targets that loop back on themselves.

She switches to the graph view and picks a function near the entry point. The control-flow nodes fan out across the workspace: three basic blocks, a conditional branch, and a tail call into a subroutine she suspects handles the web interface. She double-clicks through to that subroutine and watches the decompiler render the logic into C-like HLIL. A buffer of fixed size sits on the stack, and a call to strcpy writes into it from a network read. No bounds check.

She annotates the buffer with a structure that matches the protocol definition, renames the destination field, and highlights the stack frame layout. A right-click on the strcpy call shows every other site that reaches the same function — three more instances, all with similar patterns. She tags each one with a comment, exports a list of vulnerable offsets as a CSV through a Python one-liner in the console, and screenshots the graph for the advisory draft.

Before closing the session, she opens the hex editor overlay, patches the immediate in the branch that guards the copy length, and saves the modified firmware. The camera vendor gets a proof-of-concept binary, and the researcher moves on to the next device on the shelf.

Version
6.0.10601-personal
Download
584 MB
Developer
Vector 35 Inc.
Languages
English
Activation
Included
Compatibility
macOS 10.15 or later
Architecture
Apple Silicon, Intel 64-bit

Questions readers asked

It loads PE, Mach-O and ELF executables and can disassemble x86, x86-64, ARMv7, AArch64, PowerPC, 6502, Z80, MIPS and TMS320C6x binaries, according to Vector 35.

Letters to the desk 0

Sign in or open a desk account to write a letter.

No letters on this brief yet. They are read before they run.

More in Mac Apps

The whole section