gaasedelen / lighthouse

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

Any support for Linux binaries? #37

Closed saidelike closed 6 years ago

saidelike commented 6 years ago

Hi,

This is more a feature request than an actual bug but creating it here I think is best?

Could we add support for gcov [1][2] or any other Linux coverage output to lighthouse? This would be amazing as all other coverage tools from the README are for Windows afaict?

Note that for gcov, you need to have the source code but it would still be valuable to visualise in IDA the basic blocks being taken?

Thanks,

[1] https://gcovr.com/guide.html [2] https://github.com/gcovr/gcovr

gaasedelen commented 6 years ago

Hello!

All the DBI's listed (Frida, Intel PIN, and DynamoRIO) in the README.md support Linux, MacOS, and Windows! They are not exclusively Windows.

eg:

/home/doom/tools/dynamorio/bin64/drrun -t drcov -- /bin/ls

or:

/home/doom/tools/pin/pin -t /home/doom/tools/pin/CodeCoverage.so -- /bin/ls

The biggest problem with gcov is the fact that its output format is pretty bad. It also can't give explicit basic block addresses from the binary, and I don't want to jump through a bunch of hoops to try to translate what they do provide. Finally, the binary you would be viewing in IDA would also have all the gcov instrumentation compiled in which isn't going to be pretty.

These are some of the many reasons gcov probably won't be suitable for lighthouse -- sorry :-(