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.
- File Formats (previously in part 1)
- Analysis (previously in part 1)
- UI
- Architectures
- Updater
- Documentation
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 - 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 - Figure 2
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 - 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 - 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
- Fix: Getting started guide now shows all settings with descriptions
- Fix: More info on the using plugins user documentation
- Fix: Many general API documentation format fixups, new examples, and others