At Persistence Labs our goal is pretty straightforward: to make great tools motivated by real problems. One such problem, pervasive in software analysis, is dataflow tracking and visualisation. For the past year we've been working hard on exactly that and I'm pleased to introduce what will be our first product: SemTrax. As the title says, SemTrax is a semantics-aware, runtime, dataflow tracking and visualisation tool, designed to answer two fundamental questions:
- Given a data source, what operations and sinks can it influence?
- Given a data sink, what sources and operations contributed to it?
These questions are key in many tasks across debugging, vulnerability auditing, reverse engineering and exploit development. For example, tasks we've used SemTrax to help with include triaging memory corruption, tracking down dangling pointers, and attack surface identification.
We'll have more details early next year, but for now if you'd like to see SemTrax in action check out the following video! In the meantime you can sign up to our mailing list if you'd like to keep up to date. Also, to participate in our forthcoming early access program contact firstname.lastname@example.org for pricing information.
Here's a screenshot for good measure. What you're looking at is SemTrax responding to a user request for information on how the current value of the zero flag was calculated, at a JZ instruction (the SemTrax UI is on the left monitor, with IDA on the right, in case that isn't obvious!).