adds primus integration#36
Merged
Merged
Conversation
The framework for reading and processing Primus observation files
funny but it works, yes only three lines of code.
still kind of ugly with the debugger, but at least usable now
Member
Author
|
@gitoleg, please review and familiarize yourself with the new code. I would also like you to test that everything works correctly on your IDA. Once you're sure please merge it. |
it was passing more parameters than the receiver was expecting
this code shall not be here
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR implements GUI along with the low-level facilities to enable parsing, processing, and visualizing observations produced during Primus microexecutions of a program.
On the plumbing level we have added a robust sexp parsing library (utils/sexp.py) and a tracing framework on top of it (utils/trace.py), that loads a parser and provides decorators for event processors and filters.
On top of the plumbing level we implemented a Qt5 tree model, that reflects Primus observations into Qt MVC abstraction. Finally, we added a Tree widget and a control widget that selects observations and renders them as a clickable tree.
The widgets are embedded into IDA and are integrated with various subsystems, such as IDA Debugger, so that we can load traces and step through executed instructions, or just jump to instruction from a corresponding observation.
The majority of the code is totally independent on IDA (sexp parsing, tracing framework, Qt model/views) so they could be moved from this repository to bap-python in the future.