IDA 9.2 is bringing a fresh set of tools for exploring cross-references (xrefs). These new views bring clarity to function relationships and data flows, making it easier to trace code paths and understand complex binaries.
Let’s take a closer look at the Xref Graph and Xref Tree.
For years, IDA users relied on qwingraph that allowed users to make graphs out of references between functions. While useful, it was not interactive, and the rendered graphs could quickly get confusing.
The new Xref Graph in IDA 9.2 evolves that concept, offering a more modern, integrated way to explore relationships between functions, code and data in an interactive manner. Though still early in development, it provides a strong foundation for richer visualization features in future versions.
The Xref Graph complements the Xref Tree, which we discuss in a bit, by showing relationships in a different perspective. It also helps users quickly understand dependencies and call hierarchies at a higher level.
Simple controls
Current state and future improvements
Xref Graph is still relatively nascent and we’re working on improving the default workflows.
Here is an example walkthrough of a workflow available today:
Finding code paths to a particular syscall
Let’s take some program and try to find paths to one of the “edges” - the “read” syscall for example.
It’s also possible to delete unwanted nodes by using “Delete selected nodes” (`D` shortcut).
On smaller binaries, the “Xrefs graph to…” action, available in the right-click menu, would be a great candidate; it will gather callers recursively. This approach has caveats in 9.2: at the moment, Xref Graph’s layout algorithm performs slowly on sizable graphs and on a large enough binary, graphs will quickly reach thousands of nodes.
Techniques for dealing with large graphs:
The search bar at the bottom can be used to swiftly select nodes that match a certain string. Once the nodes are selected, the node manipulation actions will be enabled on those. For example this can let one rapidly select and remove functions that match a certain library prefix.
Another new addition is the Xref Tree view. Instead of relying solely on graphs, this feature presents cross-references in a browsable, hierarchical structure. Users can quickly expand and collapse branches, making it easier to trace references without losing the broader context.
This feature consolidates and replaces the Function Calls and Cross References widgets.
Highlighted Features
Customization and options
Together, the Dynamic Xref Graph and Xref Tree give analysts both a visual overview and a detailed textual map of code and data references. So whether you gravitate towards a big-picture diagram or a precise, navigable tree, IDA 9.2 brings new tools to better understand the relationships hidden inside complex binaries.
Do you have suggestions on what you’d like to see in the next versions of Xref Graph and Xref tree?
Feel free to contact us at product@hex-rays.com or let us know on our Discourse Forum!