crytic / ethersplay

EVM dissassembler
GNU Affero General Public License v3.0
838 stars 118 forks source link

Refactor EVMView to drastically improve analysis time #42

Closed joshwatson closed 5 years ago

joshwatson commented 6 years ago

This branch completely revamps how analysis is done, and ships it all off to the evm_cfg_builder repo that isn't yet released. Additionally, I've applied a few tricks to reduce overhead as well, such as caching the cfg analysis in the BinaryView metadata, and turning off IL analysis until after all indirect branches have been applied, so the IL dataflow engine isn't constantly spinning, trying to keep up with all of the new basic blocks that keep getting discovered. This also fixes #33, because invalid instruction locations will not be processed.

I don't think it's completely finished yet, but I did want to at least get the PR up so people know it's here and can check it out. I think there may also be a couple bugfixes I need to apply to pyevmasm and evm_cfg_builder before it can be merged as well.