@joxean I think a fine-grained callgraph including call site information would break this tie.
Match the call sites in the two binaries, using instruction-level comparisons. You can then differentiate between the two call edges, based on which call site they are from.
#BinaryDiffing #callgraph #Diaphora
I'm happy to share that I just released #MetaCG version 0.5.0 \o/
Besides a number of important bug fixes, we have *finally* reworked some internals that gave us a great performance improvement. For several use cases from minutes to seconds.
Thank you so much to everybody who contributed.
If your curious, check it out at https://github.com/tudasc/MetaCG
#metacg #hpc #programanalysis #callgraph #tudasc
@ehmatthes you could roll your own with Python's ast module, I reckon.
Try :github: CodeQL for this (free for open source). It'd be pretty easy to get call graph nodes and edges and make a GraphViz diagram (or other graph):
https://github.com/github/codeql/discussions/8063
Another option would be TreeSitter, again by :github:. There's a :rust: crate for making graphs from TreeSitter: https://github.com/tree-sitter/tree-sitter-graph
(I work at GitHub)
Joern also supports Python: https://docs.joern.io/cpgql/calls/