Vector35 / binaryninja-api

Public API, examples, documentation and issues for Binary Ninja
https://binary.ninja/
MIT License
928 stars 209 forks source link

Expand and improve the "problem" tag types #2352

Open yrp604 opened 3 years ago

yrp604 commented 3 years ago

Two related requests:

First, when REing the analysis failures are often valuable starting spots for analysis. They can identify interesting code, show load errors, show lift errors, etc. Right now this functionality is partially implemented via certain tag types, e.g. non-code branch, unresolved indirect branch, unresolved stack adjustment, etc. However, the UI workflow here leaves something to be desired currently -- go to tag types, enable those tag types, go to tags and navigate through them.

The first request is for these analysis failures should be pushed to the users attention in some fashion. Something similar to the red X for error logs, so the user is reminded to look at the analysis failures. Pushing this to the user is somewhat critical in my opinion -- finding the failure tag after you've found the problem some other way defeats the point.

Second expand the number of problem tag types. If this is the default way unexpected analysis events are going to be communicated to the user, there are probably a bunch which could be added.

List of possible tags to add:

nshp commented 3 years ago

In a similar vein, I'd like to see a more complete IL linter sort of thing. There's a liftcheck plugin floating around from @rssor, but it only has a few tests. It seems like there are a lot of structures in the IL which display just fine, but are abnormal/unexpected and thus break analysis in mysterious little ways. For example, mixing differently-sized expressions without explicitly using a zx or sx.

psifertex commented 3 years ago

Note that we've created a problemlist label that we plan to work on once we've implemented #2373

Tagging all the relevant ideas with that label now, but let us know if we've missed some.