gaasedelen / lighthouse

A Coverage Explorer for Reverse Engineers
MIT License
2.26k stars 307 forks source link

Feature request: Diff view #22

Open MJavad opened 7 years ago

MJavad commented 7 years ago

It would be good to have a feature like a Diff mode where you compare two composers output. Nodes that appear in only one of can be colored yellow and those that appear in both blue . Also there can be a column in Diff Overview which shows similarity and each row should be colored based on similarity. The definition of similarity is a bit tricky it's good to have multiple algorithms for it. I remember BinDiff had good diff views you can refer to.

BTW, This is a great plugin, I was looking for this for a long time. Thanks :)

gaasedelen commented 7 years ago

Thanks for the request!

Coloring blocks differently based on their origin/set is something I've considered, but there are some complexities to doing 'attribution' on composed coverage sets. This may require some pretty fundamental changes to how Lighthouse manages coverage internally, so I have been putting it off.

Since you're not the first to ask for this, I think this is something that will come sooner than later (maybe v0.8?)

gaasedelen commented 7 years ago

As for a 'Diff Overview', I honestly don't see this in the immediate future. I agree that there is value in it, but I don't think it is worth the costs (time, motivation) for me to pursue right now.

MJavad commented 7 years ago

I personally think something like similarity has a lot of value in finding what went wrong or what changed (in Fuzzing or RE). To know where two coverage files (or compositions) are different helps alot. Normally to find the mentioned area I look at functions with reletively high complexity and guess the similarity by looking at A-B, B-A and A^B and select functions that may be good. But if similarity is measured I can ignore functions with 100% similarity (same path taken) and 0% (if both A and B contain a function they at least both contain the first block of that function so the similarity is more that zero) and just focus on important functions. Ofcourse I understand if you can’t invest the time needed for this I just wanted to give you more motivation if you think it may be a good feature.