falconre / falcon

Binary Analysis Framework in Rust
Apache License 2.0
549 stars 47 forks source link

Use the Instruction Address as Temporary Scalar Index #70

Closed endeav0r closed 4 years ago

endeav0r commented 4 years ago

This replaces the "unique temporary index per block" approach.

The unique temporary index per block is almost always 0 because when lifting the instruction from Capstone to Falcon IL, each lifted instruction results in a new CFG.

When merging the CFGs the temporary scalars are not adjusted, therefore we end up with a lot of duplicated temp_0.0 scalars (which may have different bitness!).

This may cause problems when the CFG is manipulated and later transformed into SSA.