Welcome to 2019! As we kick off the new year, let’s look back on all the improvements 2018 brought to Binary Ninja and Vector 35. Plus, we’ll look forward at some of the exciting plans for 2019 and beyond.
In the code
Since our last update, we’ve had a ton of great commits as we near our 1.2 release (78% complete at current count!). 1.2 is a lot like Gibson’s view of the future – it’s here, just not very evenly distributed. Many major features that were under development in feature branches are landing on dev, so the changes between the last two stable releases should be pretty profound.
Note that some of these features are currently only on our dev branch but should be landing in the upcoming stable branch, “Soon™️”.
- A minigraph for a fast overview of the current function in graph-view
- Improvements to renaming/typing structure elements directly from the graph view as opposed to having to access the type view itself
- Partial register highlighting that can highlight related registers (think
eax) in a slightly different highlight color
- Plugins register menu items can choose to be grouped in a sub-menu
- Many improvements to the PE parser and PE analysis in general
- Ironed out many Python3 bugs including a more robust install_api.py script, and automatic detection/selection of available Python versions
- Addresses in the log and reports are now clickable to navigate to those addresses
- Advanced expanded expression parsing, most notable in the
goto dialog. (For example:
symbolName + [symbolName2].d * 0x40)
- IL Views can now be highlighted
- A new advanced settings UI allows customizing a number of analysis behaviors and other settings (use
<ctrl> + .or
<cmd> + .depending on your platform)
- You can now select the appropriate python library from a pre-defined list of auto-detected runtimes (Use the advanced settings UI
- Custom themes for user-contributed themes and after a contest we’ve got a number of great ones available to use
- One of our oldest issues for full text search was completed
- Copy/paste now works in more places
- AArch64 pointer authentication instructions supported way back on Oct 24 (there are benefits to living on dev!)
- Linux ko support along with elf object files
For many more details, as always check out the full changelog.
Others from 2018
We closed 784 issues in 2018, not even counting our internal fixes. There’s far too many improvements from 2018 to list them all, but beyond the list above, here’s a few of our other favorites looking back:
- Floating Point IL (including MIPS and x87 FPU support)
- Added support for custom architecture extensions
- New “open with options” menu for customizing analysis prior to load
- FlowGraph API for custom graphs (and the eventual base for all internal graphs)
- Changes to OpenSSL linking to enable better support across a wider variety of Linux distributions
- Python3 support (for both using python3 inside the UI and also importing binaryninja into python3 scripts)
- Unicode string support
- Enhanced zoom (“sticky” at 100% but now allows zoom greater than 100%)
- Several improvements to the linear view and xrefs pane when navigating while analysis is
- UI Version selector (to suplement the existing example plugin)
- Multiple QT version bumps
- Stack resolution solver (and manual UI) for externals with unknown alignment on ABIs with callee cleanup
- Significant linear sweep improvements across all architectures
- More accurate x86/x64 disassembly through the use of Intel’s XED
- Many performance improvements across all architectures and platforms with especially noticeable improvements for large binaries analyzed on multicore systems
2018 was a banner year for Vector 35 not only with all of the technical progress described above, but we also grew the company more than ever as well! We had two fantastic interns (responsible for multiple standout features in the previous list) and hired three full time employees. Look forward to hearing some new voices in upcoming blog posts about what they’ve been working on.
On that note:
We’re opening up hiring for interns for 2019 now as well. If you’re interested, just drop us a resume to [email protected].
Two other major features are in development that we wanted to tease as well. First, a feature map is coming that gives a birds-eye view of the binary, showing analysis updates, functions, data, and eventually any other arbitrary features that have been extracted. The unique 2d scaling lets it work equally well with large or small files and gives you another option for quick navigation throughout a file.
Coming some time after the feature map lands will also be our initial type library system. This will allow very granular selection of specific library versions to match function prototypes. This should be most noticeable in Windows PE files where the increased information will provide much more context for common library calls, and even allow granular selection of specific versions of those libraries.
Looking even further forward into 2019 and beyond, we have several new projects we’re excited to release.
First up is Binary Ninja Cloud which will be available in the first half of 2019. This will be a free version of Binary Ninja accessible via web browser. The goal is to both make Binary Ninja available to a whole new audience of people, and to also gather binaries and analysis for new automated reverse engineering technologies. Plus, it will make for a much more fully featured demo to try before buying.
Later into 2019 we hope to launch Binary Ninja Advanced which will include the forthcoming High Level IL (HLIL) and the long-awaited for official decompiler.
Finally, Binary Ninja Enterprise is still in development to enable our vision for collaborative team-based reverse engineering. No expected release date yet, but as we get closer we’ll make sure to update you here and via our other communication platforms.
Thanks so much for your support in 2018, here’s to an even more productive 2019.