About BinNavi
Information about BinNavi
zynamics BinNavi - Copyright 2005 to 2010 by zynamics GmbH
Third-Party Software
Many icons used in BinNavi were taken from FamFamFam and
are licensed under the Creative Commons Attribution 2.5 License.
Change Log
Changes in BinNavi 3.0.0 (August 1st 2010)
- Feature: Added support for the analysis of 32 bit MIPS
code. You can now use BinNavi to analyze code from embedded MIPS
devices like Cisco routers.
- Feature: Local variables can now be renamed.
This helps you to annotate the disassembled code with more
information.
- Feature: Global variables can now be renamed (through a
context menu). This helps you annotate the code with more
information.
- Feature: Cross-references to global variables are now
accessible in the main window. You can use this feature to quickly
find out what functions access what global variables.
- Feature: Views, modules, and other elements of
BinNavi can now be starred to highlight them as particularly
important or interesting. This is very useful to quickly get back to
functions you previously considered interesting.
- Feature: Added support for a faster C++ based exporter.
This allows you to import IDB files into the BinNavi database much
faster than the old Python exporter did.
- Feature: Multiple IDB files can now be imported
simultaneously. This speeds up IDB importing significantly.
- Feature: Made it easier to select multiple IDB
files from different directories for one batch import process. You
can now easily import modules from different directories in one
step.
- Feature: Added support for conditional breakpoints.
You can now decide exactly when program execution should be stopped
on breakpoint hits.
- Feature: The memory of the debugged target process can
now be edited. This allows you to make quick patches to the target
process memory.
- Feature: Instruction operands like integer literals,
registers, and even complex formulas can now be followed in memory
during debugging.
- Feature: When recording debug traces, the modules where
the trace events happened, the register values at the time of the
events and important memory sections are now recorded for each debug
event.
- Feature: It is now possible to apply set operations (union,
intersection, difference) on recorded debug traces to quickly
isolate important debug events.
- Feature: It is now possible to specify how often
breakpoints can be hit before they are removed during trace mode.
This allows users to record more complete traces than before.
- Feature: Modified the semantics of trace mode to allow
the user to create new traces from the currently active breakpoints.
- Feature: Instructions that use local or global
variables can now be highlighted in the disassembled code.
- Feature: Special instructions like function calls or
memory access instructions can now be highlighted in the
disassembled code.
- Feature: Optional statistical information
about functions is shown in call graph nodes to quickly give users
an idea about the size of functions.
- Feature: Added a way to step to the end of a function
during debugging. This is a quick way to leave the current function
and continue debugging in the calling function.
- Feature: Modules can now be sorted by name. This
makes it easier to find modules in large databases.
- Feature: Removed the separation between raw modules and
modules to smoothen the BinNavi workflow.
- Feature: Unsaved changes are now highlighted in the GUI
to show the user what he changed since he saved the last time.
- Feature: Added non-blocking progress dialogs to allow the user to
continue working while long running tasks run in the background.
- Feature: Added more hotkeys to make working with the
keyboard more comfortable.
- Feature: The password to databases can now be shown in
plain text to remind the user of forgotten passwords.
- Feature: Added a context menu to the tabs in graph
windows to close all graph views but the current one.
- Feature: When debugging, the memory view now shows the
memory address at the position of the caret. This makes it easier to
navigate through the target process memory.
- Feature: Added a context menu to the registers
view that allows the user to follow register pointers in the target
process memory.
- Feature: The output of the scripting console can now be
saved to a file.
- Feature: Previously created Debug by Criteria
expressions
are now available in a menu of the graph window for quick access.
- Feature: New improved code editor for writing
scripts.
- Feature: Renamed functions can have their name reverted
to the original name.
- Feature: The hierarchy of existing node tags and view
tags can now be reorganized.
- Feature: The correct thread IDs are now recorded for
debug events in trace mode.
- Feature: Trace events can now be filtered to show only
those traces with a given register value or whose memory contains
specific values.
- Feature: The Select by Criteria dialog can now be
extended by plugins.
- Feature: Breakpoints are now tied to a module. This makes
it possible to relocate breakpoints automatically when the debugged
module is relocated.
- Feature: The speed of echo breakpoint setting and removal
was improved drastically.
- Feature: It is now possible to quickly set breakpoints on
the addresses of trace mode debug events.
- Feature: It is now possible to quickly jump to the
instruction for which a trace mode debug event was recorded.
- Feature: The user can split one basic blocks into two
basic blocks now. This is useful in combination with stepping to the
next basic block while debugging.
- Feature: Information about the threads of the debugged
target process is now shown in BinNavi.
- Feature: The threads of the debugged target process can
now be suspended and resumed.
- Feature: ALT+Right-Click on local or global comments now
pops up a dialog to edit those comments.
- Feature: Inlined functions can now be un-inlined.
- Feature: During debugging the user can now access a panel
that shows the log of the debug events of the current debugging
session.
- Feature: The addresses of instructions can now be copied
to the clipboard quickly (context menu of instructions in
disassembled code).
- Feature: When functions references in disassembled code
have their name changed, the disassembled code is updated to reflect
this change.
- Feature: It is now possible to change the name of
referenced functions in disassembled code through a context menu.
- Feature: Memory addresses referenced in disassembled code
are now correctly rebased if the module itself is rebased.
- Feature: Instruction operands in disassembled code can
now be shown as decimal numbers, hexadecimal numbers, or their
symbolic name.
- Feature: Added context-sensitive help to many elements of
the BinNavi GUI.
- Feature: Added a way to quickly show the REIL code of a
native instruction (context menu of the instruction).
- Feature: Added a way to quickly find out what views
contain a given instructions (part of the table filter of views).
- Feature: The views whose nodes are tagged with node tags
are now shown in the main window.
- Feature: Stack values can now be copied to the clipboard.
- Feature: Added more colors to distinguish between
different types of instruction operands.
- Feature: BinNavi can now check whether exporters are
correctly installed and configured.
- Feature: Added a way to quickly find views that share
instructions with any given view.
- Feature: Really long function names are now displayed
more gracefully in the GUI.
- Feature: Write access to the database has been improved.
- Feature: Added a way to quickly select all nodes on the
paths between two graph nodes.
- Bugfix: Open graph views are now notified about changing
debugger configurations.
- REIL: Added support for 32 bit MIPS
- Plugin API: The registers of the debugged target
process can now be edited.
- Plugin API: The memory of the debugged target
process can now be edited.
- Plugin API: The Select by Criteria dialog can
now be extended using plugins.
- Plugin API: Debug trace events are now tied to
modules.
- Plugin API: For each recorded debug trace event,
the register values and the recorded memory can be accessed.
- Plugin API: Changed the semantics of CodeNode::addInstruction.
Instructions that are being inserted are now cloned before being
added. The cloned instruction is returned by the function.
- Plugin API: The IOperandExpression listener now
receives information about changing operand expressions.
- Plugin API: Removed raw modules from the plugin
API.
- Plugin API: Added the ModuleHelpers class which
provides a few functions for working with modules.
- Plugin API: Added Module::getId which returns
the database ID of the module.
- Plugin API: The BreakpointManager::setBreakpoint
functions now return a Breakpoint object.
- Plugin API: Added a Settings class where global
BinNavi settings can be changed.
- Plugin API: Added Debugger::toImagebase and
Debugger::toFilebase to convert between relocated and non-relocated
addresses.
- Plugin API: Added AddressSpace::getProject which
returns the project a address space belongs to.
- Plugin API: Added Function::getModule which
returns the module a function belongs to.
Changes in BinNavi 2.2.0 (October 1st 2009)
- Feature: Incoming call-references are now shown in the graph
window. This makes it very easy to find out what functions are
calling the function users are currently analyzing.
- Feature: Added interactive tutorials for learning how to use BinNavi.
This makes it easier for new users of BinNavi to learn about the
most important BinNavi concepts.
- Feature: Added the option to select from running processes when
selecting a debug target. This feature allows users to select
running processes of remote platforms from the BinNavi GUI instead
of the console of the remote system.
- Feature: Added the option to use the BinNavi GUI to select a
file from the remote system for debugging. This allows users to
select a file from the remote system through the BinNavi GUI instead
of the console of the remote system.
- Feature: REIL code can now be displayed as graphs just like regular code.
This is very useful for people who want to work with REIL code.
- Feature: Added the option to turn a normal control flow graph into a data
flow graph
- Feature: Added the option to connect a file with a module. This
makes it possible to display the data of the file in a hex viewer.
- Feature: Previously recorded debug traces are now shown in the main window.
This feature allows users to quickly see all recorded debug traces
for their modules and to see what views contain nodes that were hit
by previously recorded debug traces.
- Feature: Made several major improvements to our Windows Mobile
debugger
- Feature: The debugger now collects information about loaded modules and
displays name, base address, and size of all active modules of a
process. This allows users to keep track of dynamically loaded and
unloaded libraries.
- Feature: Relocated image bases of modules are automatically corrected
while debugging. It is not necessary anymore to specify the
relocated image bases of modules and dynamically loaded libraries
manually.
- Feature: Function breakpoints can now be set from the functions table of
the main window. This is quicker than opening a function or the call
graph of a module first.
- Feature: Added a way to filter the content of larger tables to make it
easier and quicker to find things. Using these filters users can
reduce the lines shown in tables to those lines that are relevant
for them.
- Feature: Visual feedback is given if searching through a graph produces
no results. This makes it more obvious whether a search operation
produced results or not.
- Feature: When searching through graphs, previous search strings are now
cached so that the user can easily search for them again at a later
point in time
- Feature: Added the option to display a dialog that shows all search
results when searching through graphs. This dialog shows all search
results in a list which makes it easy to navigate between
interesting search results.
- Feature: Addresses the user recently searched for in graphs are now kept
for later reuse. This is useful because users often want to go back
to addresses they previously visited.
- Feature: Visual feedback is given if the user wants to jump to an address
that does not exist in a graph. This makes it more obvious whether
an instruction address exists in a graph or not.
- Feature: Function nodes now display additional information about the
function they represent. This allows users to get an idea how large
the functions represented by function nodes are.
- Feature: The module names of functions are now shown in call
graph
function nodes. Previously it was unclear to which module a function
belongs to if function nodes of multiple modules were shown in one
view.
- Feature: The original function of a code node can now be opened from the
context menu of the code node. This allows users to quickly open the
original function of a code node from heavily modified views.
- Feature: Added the option to review the available debugger options.
Previously this information was only shown once when first
connecting to a debugger. Now it is possible to display the
information again from the BinNavi GUI.
- Feature: Graph windows can now be switched between a default perspective
and a debug perspective. This reduces clutter and makes the GUI less
complex.
- Feature: Added the option to create non-existing databases right from
BinNavi. This makes it easier to get started with new databases
because it is not necessary to create new databases with external
tools anymore.
- Feature: Added popup-descriptions to all settings options in the settings
dialog. It is now easier to modify settings without having to
consult the manual.
- Feature: Using the
zynamics GDB Agent it is now possible to debug Mac OS
applications.
- Feature: The zynamics GDB Agent can now be used from Linux and
Mac OS in addition to Windows.
- Feature: Added a quick information label that displays information about
the last debug events during debugging.
- Feature: Size information about sections is now shown in the memory
section box. This allows users to get an idea how large individual
memory sections of the target process are while debugging.
- Feature: Added the option to stop waiting while section memory is loaded
- Feature: Added the option to inline all called functions of a graph in
one step. This is useful for quickly determining all possible
control flow paths between two nodes including all control flow
paths in subfunctions.
- Feature: Improved error messages throughout the program. This
allows user to get a better understanding of what went wrong and how
to fix the problem.
- Feature: The database format can now support multiple instructions per
address. This makes it much easier to experiment with instruction
creation, for example while deobfuscating code.
- Feature: Freshly created views are now now saved automatically
anymore. This makes it much less tedious to experiment with
automatic view creation because it is not necessary anymore to
delete previously created views.
- Features: Error messages now have unique error IDs. This makes
it easier for us to find out what went wrong when users come across
bugs and report them to us.
- Feature: Errors can now be reported using a single button click
in the error dialog. The error description is automatically sent to
our bug tracker and users will receive feedback through the email
address configured in their BinNavi settings.
- Feature: Added a Python sample script that can be used to export comments
to IDA Pro. While this serves mainly as a demonstration script for
using the plugin API, it is also useful for users that want to
continue working with IDA Pro.
- Feature: Added a new sample code coverage plugin that demonstrates how to
script the debugger. This plugin keeps track of what nodes of a view
are hit during a debug session and changes their background color
depending on how often they were hit.
- Feature: Added a way to select function nodes of graphs by
function type.
- Feature: Added a way to tag all nodes of a debug event trace
with a tag.
- Feature: The font used in all comment dialogs was changed
to monospace.
- Feature: The Trace Events table now has a context menu that
provides useful functions.
- Feature: All comment dialogs can now be closed using CTRL-ENTER.
- Feature: The DEL key can now be used to delete node tags in the
node tags tree.
- Feature: The DEL key can now be used to delete traces in the
traces table.
- Feature: The traces table now has a context menu that provides
useful functions.
- Feature: Added the option to create combined callgraphs of all
modules of a project.
- Feature: Memory Reload button now reloads memory shown in the
stack window too.
- Feature: Improved the Pathfinder example plugin that is shipped
with source.
- Bugfix: Fixed an issue that led to crashes when thread IDs >= 0x80000000
were seen during debugging
- Bugfix: Fixed a thread leak that occurred when many modules were
assigned debuggers
- Bugfix: Fixed an issue that led to problems when loading projects that
included modules that were loaded and other modules that were not
loaded
- Bugfix: Fixed an issue that led to problems when views for traces with
zero events were requested
- Bugfix: Fixed an issue that caused breakpoints not to be removed when
clicking the "Remove all breakpoints" button
- Bugfix: Fixed an issue that led to incorrect register information shown
during debugging for threads that did not cause the last debug event
- Bugfix: Fixed a bug that made the Save button of projects misbehave when
project debuggers were configured
- Bugfix: Fixed a bug that led to incorrect behavior when saving/loading
edge colors
- Bugfix: Fixed an error that led to incorrect results of the backtracking
algorithm when encountering certain XOR instructions
- Bugfix: Fixed issues in the REIL translation of the x86 instructions
RCL, IMUL, and PUSHF
- Plugin API: Added the option to execute SQL queries from the
plugin API. This makes it possible for users to query the SQL
database directly if necessary data is not easily available from the
plugin API.
- Plugin API: Added the option to change the background color of
instructions code nodes. With this feature users can highlight
important instructions programmatically from plugins and scripts.
This improves the visualization of analysis algorithms.
- Plugin API: Added the ability to create Instruction objects.
This is useful for users that need to create new instructions, for
example when they write analysis algorithms that modify existing
code.
- Plugin API: Added the option to change the color of edges. This
feature allows users to give edge colors semantic meaning in the
context of their analysis algorithms.
- Plugin API: Made the frame of GraphWindow objects available.
This frame object can be used by plugins as the parent frame of
dialogs and message boxes.
- Plugin API: Improved the design of the Breakpoint API
- Plugin API: Improved the design of the MemoryBookmark API
- Plugin API: Harmonized the naming scheme of enumerations
- Plugin API: Harmonized the functions of the MessageBox class
- Plugin API: Many new methods added to the plugin API
- Plugin API: Added the option to remove instructions from code nodes to the
plugin API
- Plugin API: Added the option to remove databases from the plugin API
- Plugin API: Added the option to listen to changes in DebuggerTemplate API
objects
- Plugin API: Added the option to add debuggers to projects
- Plugin API: Added the option to remove debuggers from projects
- Plugin API: Added the option to retrieve all project debuggers
- Plugin API: Added the option to delete address spaces
- Plugin API: Fixed various bugs that left data loaded when
projects were closed
- Plugin API: Added the option to listen on project debugger
events
- Plugin API: Changed the behavior of Project::getFunctions to
return the functions of all loaded modules
- Plugin API: Added a way to close View objects from the plugin
API
- Plugin API: Text nodes can now be cloned
- Plugin API: Added the option to determine the tags of a View
- Plugin API: Added the option to untag views
- Plugin API: Fixed a bug in View::setDescription
- Plugin API: Added the opportunity to listen on view edges
- Plugin API: View Node object listeners now notify about parent
group changes
- Plugin API: View Node object listeners now notify about
visibility changes
- Plugin API: Fixed issues in ViewGraphHelpers that led to
internal objects included in signatures
- Plugin API: Added a way to find instructions by long-address to
ViewGraphHelpers
- Plugin API: Added a way to get all tags associated with a view
node
- Plugin API: Added a way to get the debugger template of a module
- Plugin API: Module listeners are now notified about changing
module debugger templates
- Plugin API: It is now possible to add listeners to Instruction
objects
- Plugin API: Changes in Instruction comments are now sent to
listener objects
- Plugin API: Made the API graph algorithms more generic and made graph
algorithms available to more API graph types
- Plugin API: The view of a function can now be retrieved from the plugin API
- Plugin API: Fixed an issue in TreeNode::getChildren() that led to internal
objects being exposed to the plugin API
- Plugin API: Fixed a bug in the InstructionGraphNode class that caused edges
that were removed from the graph to remain in the children/parents
set of instruction graph nodes
- Plugin API: CodeNode objects do not required a parent function anymore. This
makes it much less tedious to create new graphs.
- Feature: Added the option to copy the value of registers to the clipboard
- Plugin API: Added the option to set the meta-data of a ReilInstruction
object
- Plugin API: Instructions that cause exceptions when translating code to REIL
are now accessible from the plugin API
- Plugin API: Added the option to process raw debug events
received from debug clients.
- Plugin API: Added a global output console that can be used by
plugins to output information.
- Plugin API: Added a few REIL helper functions
- Plugin API: Added some helper functions for creating REIL
instructions
- Plugin API: Fixed various bugs that led to crashes
- Plugin API: Fixed a bug that led to incorrect
parents/children of nodes
- Plugin API: Added helper functions for function inlining
- Plugin API: Added a way to get the incoming and outgoing edges
of nodes
- Plugin API: ProgressDialog now returns potential exceptions
thrown while the progress dialog is active
- Plugin API: Added the ViewGenerator class that makes it very
simple to create new views from REIL code
- REIL: Fixed a few REIL translation issues for various ARM
instructions
- REIL: Fixed an issue that led to incorrect edge types in REIL
graphs
- REIL: Added REIL support for the x86 instructions SHRD, SHLD,
XADD, SETALC, BT, BTC, BTR, BTS, SAL, JCXZ, BSR, BSL
- REIL: Fixed a REIL translation issue for the x86 instruction
XLAT
Changes in BinNavi 2.1.1 (June 5th 2009)
- Bugfix: Removed excessive debug output in some situations
- Bugfix: Improved input behavior for hex number fields
- Bugfix: Improved text copy speed when copying from tables
- Bugfix: Fixed a bug in the Lengauer-Tarjan algorithm that led to
incorrect dominator trees
- Bugfix: Clicks on the project debugger control now have an
effect on the status of the Save button
- Bugfix: Fixed a bug that led to incorrect behavior of the Save
button when module debuggers were selected
- Bugfix: Special characters like German Umlauts can now be used
in instruction comments
- Bugfix: The NOT operator now works in the Select by Criteria
- Bugfix: Fixed a bug that led to incorrect register tracking
results for "call register" instructions
- Bugfix: Fixed a bug that led to incorrectly displayed trace data
when debug traces were reordered
- Bugfix: Less "Do you want to Save?" dialogs are shown when
closing the main window of BinNavi while graphs are open
- Bugfix: Fixed a slight layouting issue that cut off information
about selected module debuggers
- Bugfix: Fixed a bug that caused breakpoints not be removed when
pressing the "Remove All Breakpoints" button
- Bugfix: Fixed a bug that led to closed threads not being removed from the
plugin API
- Plugin API: REIL instructions and REIL graphs can now be easily
created from the plugin API
Changes in BinNavi 2.1 (April 1st 2009)
- Feature: Added a stack window that displays the stack while
debugging
- Feature: Added the option to group nodes in graphs
- Feature: Added the option to statically track register usage
- Feature: Improved settings dialogs to make it easier to select
settings
- Feature: ALT-RightClick on instructions pops up the instruction
comment dialog
- Feature: Double-clicking a node zooms to the node
- Feature: CPU flags are now shown individually while debugging
- Feature: Added a quick overview over the available hotkeys in
graph windows
- Feature: Improved zoom behavior during debugging
- Feature: When selecting the content of a node, a special context
menu is now shown to work with the selected content
- Feature: Added a sample Python script that creates the dominator
tree of a graph
- Feature: Added the option to select the log level in the
settings dialog
- Feature: Improved the GUI of the main window to make the Save
button only clickable if data was modified
- Feature: Added the option to delete nodes from a graph while
connecting the parents of the nodes with their children
- Feature: Added the option to remove instructions from nodes
- Feature: Added the option to select all nodes of a graph which
belong to the same function
- Feature: Added the option to follow memory pointers in the
memory view while debugging
- Feature: Added the options to remove, deactivate, and activate
all active breakpoints
- Feature: Improved the GUI of the scripting dialog
- Feature: Added the option to set a preferred scripting language
which is selected by default in scripting dialogs
- Feature: Added the option to create a copy of a view
- Feature: Added the option to add bookmarks to instructions
- Feature: Changed the behavior of proximity browsing to make sure
that comment nodes are always visible when the nodes they are
attached to are visible
- Feature: Added the option to flip endianness in the memory
viewer while debugging
- Feature: When closing a window, the user is now asked about
saving in one dialog, instead of having one dialog per open graph
- Feature: Added a "Report a Bug" menu
- Feature: Added the option to choose default basic block colors
- Feature: The appearance of the graph window is now saved between
sessions
- Feature: Added the option execute arbitrary scripts without
loading them into the script editor first
- Feature: Added the option to automatically execute a startup
script when opening script dialogs
- Feature: Improved the way graph windows are brought to the front
while debugging
- Feature: Added the option to import raw modules to a database
without first establishing a connection to the database
- Feature: Added the option to delete multiple debug traces in one
step
- Feature: Edges that belong to loops are now displayed
differently than edges that don't
- Feature: Build Numbers are now shown properly in the About
dialog
- Feature: Added PowerPC and ARM support to REIL
- Feature: Improved REIL support for x86 assembly
- Feature: Improved the exporting of ARM code from IDA Pro
- Feature: Relocated addresses are now shown in callgraphs too
- Feature: Edges that jump from the end of a loop to its start are
now painted different from normal edges
- Bugfix: Fixed a bug that caused x86
functions with SIDT/SGDT/SLDT/LIDT/LGDT/LLDT instructions to fail
- Bugfix: Fixed a bug that caused useless graph layouting when
settings changed that do not influence the graph layout
- Bugfix: Fixed some issues that caused minor problems with graph
layouting when loading saved graphs
- Bugfix: Global comments are now properly synchronized between
open views
- Bugfix: The border color of blocks split during function
inlining is set correctly now.
- Bugfix: Fixed a bug that caused debugging highlighting to
disappear from nodes when comments were added to the node
- Bugfix: Fixed a bug that caused the option to display multiple
edges between two blocks as one to misbehave
- Bugfix: Fixed a bug that failed to update the scripting dialog
output panel when printing from registered callback objects
- Plugin API: Added a static analysis framework (MonoREIL) to the
plugin API
- Plugin API: Added a sample script that shows how to use MonoREIL
- Plugin API: Fixed an issue that caused node tagging to fail
- Plugin API: Added Lengauer-Tarjan algorithm to determine the
dominator tree of graphs
- Plugin API: Added the option to open graphs
- Plugin API: Added the option to access graph windows
- Plugin API: Added the option to access the module/project a view
belongs to
- Plugin API: Made it easier to convert native assembly code to
REIL code
- Plugin API: Added the option to get the edge type of edges in
REIL graphs
- Plugin API: Added the option to access REIL instruction
meta-data
- Plugin API: Added implementations for common module-related
functions
- Plugin API: Added implementations for common view-related
functions
- Plugin API: Made it possible to get the function objects
represented by function nodes
- Plugin API: Added the option to be notified about changes in
code nodes
- Plugin API: Enumerations are now properly documented in the API
documentation
- Plugin API: Address objects can now be treated like longs in
Python scripts
- Plugin API: Added the option to access the BinNavi start path
- Plugin API: Added the option to access comment nodes from the
plugin API
- Plugin API: Added the option to access group nodes from the
plugin API
- Plugin API: Added the option to get the image base of a module
inside an address space
- Plugin API: Added implementations for common breakpoint-related
functions
- Plugin API: Added access to the binary data of instructions
- Plugin API: Improved access to debug traces
- Plugin API: Added the option to create debug traces from the
plugin API
- Plugin API: For increased convenience, objects accessed from the
plugin API are not loaded automatically
- Plugin-API: Added the option to reload plugins without
restarting BinNavi
- Plugin-API: Improved the convenience of working with BinNavi
objects from Python scripts
- Plugin API: Fixed a bug that caused an exception when removing a
debugger from a module
- Plugin API: Made it significantly easier to convert functions
and other code objects to REIL code.
- Plugin API: Added new example scripts
- Plugin API: Added the option to add and remove code and data
references to/from instructions
- Plugin API: Made it possible to write stand-alone scripts that
run from the shell without running BinNavi in the background
- Plugin API: Added a way to determine the type of a function
(normal, library, imported, ...)
- Plugin API: Fixed a bug that led to incorrect removal of
breakpoints
- Plugin API: Added the option to create new REIL instruction
- Plugin API: Added the option to modify instruction graphs
Changes in BinNavi 2.0 (October 15th 2008)
- Added the option to bundle multiple modules into address spaces and projects
- Added the option to analyze and debug dynamically linked modules
- Added the option to load and analyze multiple modules at the same time
- Improved the Python scripting API
- Added support for Ruby and ECMAScript scripts
- Added a full-featured plugin API
- Added the option to tag views
- Added the option to tag nodes
- Added comment nodes which can be used to store larger comments in graphs
- Improved the graph overview panel
- Added the option to copy disassembly data to the clipboard
- Added the option to export graphs in SVG format
- Improved graph loading and rendering speed
- Added the option to associate imported functions with real functions in other modules
- Added better support for debugger configurations
- Added support for multiple interface languages (English and German are supported in this version)
- Improved manual
- Improved proximity browsing with nodes that give information about hidden nodes
- New Select by Criteria dialog allows node selection with complicated criteria
- Added tabbed browsing in graph windows
- Added better REIL integration
Changes in BinNavi 1.5 (March 1st 2008)
- Improved debugger interface
- Single stepping, stepping over calls, and stepping to the next basic block are now possible
- Improved display for registers and memory
- Debugger support for multi-threaded programs
- Memory bookmarks
- Improved breakpoint handling
- Improved graph layout
- Improved graph loading and rendering speed
- Additional layout options
- Support for line comments
- Distinction between local comments and global comments
- Search for functions by address
- Improved search functionality in graphs
- Mousewheel support to zoom graphs
- Improved graph tooltips
- Improved function inlining
- Added magnifying glass mode
License
BinNavi License Agreement
In the following, the term zynamics is used interchangeably with "zynamics GmbH".
The BinNavi computer programs, hereafter described as "the software"
are licensed, not sold, to you by zynamics pursuant to the
terms and conditions of this Agreement. zynamics reserves any
right not expressly granted to you. You own the media on which the
software is delivered but zynamics retains ownership of all
copies of the software itself. The software is protected by copyright
law.
The software is licensed on a "per user" basis. Each copy of the
software can only be used by a single user at a time. This user may
install the software on his office workstation, personal laptop and
home computer, provided that no other user uses the software on those
computers.
In case you obtained an "enterprise license", any regular full-time
employee of your organization is granted a "per user" license. The
organization and it's exact limits have to be defined upon purchase
of an enterprise license.
In case you obtained an "evaluation license", one single employee
can use the software until the granted evaluation period expires, for
the sole purpose of evaluating the software.
The "per user" and "enterprise" license also allows you to
- make as many copies of the installation media as you need for backup
or installation purposes.
- reverse-engineer the software (with the exception of y.jar and all
components that belong to yFiles)
- with the written agreement of zynamics, transfer the software
and all rights under this license to an other party together with a
copy of this license and all material, written or electronic, accompanying
the software, provided that the other party reads and accepts the terms
and conditions of this license. You lose the right to use the software
and all other rights under this license when transferring the software.
Restrictions
You may not distribute copies of the software to another party or
electronically transfer the software from one computer to another if
one computer is also used by another party.
You may not modify, adapt, translate, rent, lease, resell, distribute,
or create derivative works based upon the software or any part
thereof.
Limited Warranty and Disclaimers
The software is provided "as is" without warranty of any kind.
zynamics expressly disclaims all implied warranties, included
but not limited to the implied warranties of merchantability and
fitness for a particular purpose. zynamics does not guarantee
the software or any accompanying materials in terms of their
correctness, accuracy, reliability, or otherwise. The entire risk as
to the results and performance of the software and written materials
is assumed by you.
Complete Statement of Warranty
The limited warranty provided in preceding paragraphs are the only
warranties of any kind made by zynamics on this product. No
oral or written information or advice given by zynamics, its
dealers, distributors, agents or employees shall create a warranty or
in any way increase the scope of this warranty, and you may not rely
on any such information or advice. This warranty gives you specific
legal rights. Your statutory rights, which may vary from country to
country, are not affected.
Limitation of Liability.
In no event will zynamics or his employees be liable to you
for any consequential, incidental, or indirect damages arising out of
the use or the inability to use the software or accompanying written
material. This includes damages for loss of business profits, business
interruption and loss of business information. The liability of
zynamics for actual damages for any cause whatsoever is
limited to the money paid for the software that caused the damages.
Termination
This license is effective until terminated. It will terminate
immediately without notice if you fail to comply with any of its
provisions. Upon termination you must destroy the software and all
copies thereof. You may terminate this license at any time by
destroying the software and all copies thereof.
Disputes
This agreement is subject to German law. The courts at Essen/Germany
shall have exclusive jurisdiction.