Binary Ninja Blog

5.0 Release 2

While our customers with active support on the development branch have access to these changes and more, we occasionally release updated stable releases just to include a few fixes that we either did not identify during stable release testing or those for whom a fix was scheduled after the original stable release.

This 5.0 Release 2 build improves on our recent 5.0 release with a few small stability improvements and fixes.

Issues that were fixed in this re-release include:

Core/Analysis

  • Improvement: RTTI Processing:
    • Support for volatile typedefs and consult cv qualifiers when comparing types
    • Support NTR type in base structures
    • Handle type names emitted by GCC with a leading *
    • Handle cxxabi vtables being referenced via RELOC_COPY
    • Demangle more types in Itanium RTTI
    • Fixed skipping type info with stripped root type info object
    • Fixed some RTTI information being overwritten by empty class info
    • Loosened section semantic sanity checks in Itanium RTTI processing
  • Fix: Memory leak in BNRegisterPluginCommand
  • Fix: Memory leak in BNGetFullInfoUpdateChannels
  • Fix: Memory leak in BNVersionInfo
  • Fix: Memory leak in Metadata::GetKeyValueStore()
  • Fix: Memory leaks in Component::GetGuid/GetName/GetDisplayName
  • Fix: Memory leak in Collaboration::NotificationListener
  • Fix: Memory leak in python Enumeration class
  • Fix: Memory leaks in Sections, Segments, Settings, ExternalLibrary, and BackgroundTask
  • Fix: Memory leak when calling Metadata::get_value_store in Rust API
  • Fix: Crash when querying possible variable values from disassembly view
  • Fix: Crash on close in URLHandlerThread
  • Fix: Crash with zeroed base class descriptor in RTTI
  • Fix: Crash with invalid vtable info when processing MSVC vftables
  • Fix: Version info leaking channel string
  • Fix: AssociatedDataStore behavior
  • Fix: Data tags added via API not showing in flow graphs until refresh
  • Fix: SetTagTypeVisibleUndoAction not properly tracking state
  • Fix: Eliminated erroneous log message from SettingsCache when opening text-format files
  • Fix: Catch some unhandled exceptions in UI

DWARF

  • Fix: Do not add binary base to function address twice when a symbol with that function’s raw name already exists
  • Fix: Load eh_frame/debug_frame from base bv instead of debug bv and make calculated cie offset ranges relative to bv start
  • Fix: Dwarf raw name resolution not resolving specification
  • Fix: Try to load eh_frame/debug_frame from both raw and normal views in dwarf import

Thumb2

  • Fix: Correctly set flags for mov{s} and mvn{s} instruction variants with 32-bit encodings

Dyld Shared Cache / Mach-O

  • Improvement: Mark Objective-C metadata-derived symbols as local instead of exported
  • Improvement: Export Trie Parsing: Reworked to avoid recursion with vastly improved error handling
  • Fix: Possible deadlock when loading images from the UI
  • Fix: Potential crash when closing view with images still being added in the background through the UI
  • Fix: Updated ref count warning to only show when above two
  • Fix: Various fixes for Objective-C metadata processing

UI/UX

  • Improvement: Stack Render Layer included in the Free edition
  • Improvement: IME methods now supported in Linux
  • Fix: Opening URLs in enterprise with floating license in some situations

Debugger

  • Improvement: Maintain the current address in the graph view when refreshing its contents
  • Improvement: Hide PC indicator at 0x0 in HLIL if the debugger is not active
  • Fix: UAF crash if the user closes the tab before the launch is completed

Documentation

  • Improvement: Memory permissions concept section in user documentation updated
  • Fix: Formatting and added information regarding the volatile annotation and how it impacts analysis 

These builds are now live on both our update servers and via our website. If you’re a Binary Ninja Free user, you can download a new installer here. If you’re a Personal, Commercial, or Enterprise user, the new build is available from the portal or via a license recovery email. And as always, you can update your existing client.