Binary Ninja Deep Thoughts

1.2 Launched (2 of 2)

Welcome back. Last time we started our look into all of the new features that have landed on our stable branch since the previous stable release in May. In part two of the series we’re contiuing our look at new features added to the: UI, Architecture improvements, update functionality, and documentation fixes.

UI

1.2 was really focused on improving the overall workflow and usability of Binary Ninja. If a tool has the most amazing feature in the world, but you can’t find it or it’s hard to use, the benefit can be severly impacted. Here’s a summary of the 1.2 improvements from the last stable to current.

Linear View

Linear View Linear View - Figure 1

Linear view now support hotkey navigation (works well with my preferred vim navigation settings), address-baesd comments. Previously comments could only be attached to functions, but now comments can be read or set from the binaryview. The UI will pick the appropriate API automatically, but if building plugins, be aware of those differences.

Another often-requested feature was the ability to select chunks of code in linear view. It’s currently limited to basic-block boundaries.

Cross References

Cross references now support forward and backward references, combined with the better selection means you can quickly select a chunk of instructions and see both incoming and outgoing references.

Updated Xrefs Updated Xrefs - Figure 2

Command Palette

Command Palette Command Palette - Figure 3

The command palette itself hasn’t changed, but as always, all new functionality described in this section of UI updates includes command palette entries making it even more useful.

Auto-completion/Expression Parser

Expression Parser - Figure 4

The new expression parser supports a ton of useful features and is, as always, available from the API.

Symbols View

Symbol List Symbol List - Figure 5

The function list is now more than a function list. Right-click in it to get a taste of what else it can do.

Tab-Completion

The built-in python console now supports tab-completion and it’s even more featureful than the normal python repl. On Python3 you’ll get function prototypes, the completion is smart about when it adds parenthesis to a call, and it will complete through most list lookups.

Tab Completion Tab Completion - Figure 6

Other

  • Feature: FeatureMap “File-Backed Only Mode” (right-click on the feature map)
  • Feature: Better Type Creation/Modification Experience
  • Feature: Reports now use QWebEngineVew, enabling significantly better CSS and JS support. You can also still link back to a parent binary view using the expression parser with URLs like: binaryninja:?expr=functionNameOrAddressOrExpression.
  • Fix: Better DockWidget layout

Architectures

  • Feature: Support for ARM BE8
  • Feature: Open-sourced PowerPC architectures
  • Feature: Beta ppc64 support
  • Fix: X86 (Enter, rep movsb/w/d, rep scas, movq, movups, movaps, movdqu, xorps)
  • Fix: Thumb2 (UDF, LDM, STM, IT Blocks)
  • Fix: AArch64 (UBFM, UBFX)

Updates

  • Feature: directly access update channel and preferences from the command-palette via “Update Channel…”
  • Fix: Updates are now significantly faster, so from this stable forward, you should find yourself spending a lot less time waiting for updates to complete.

Documentation