Current limitations
As the previous tutorial shows, the interactive tool is still in a proof of concept state. It is not yet ready for the reverse engineering real life applications, suffering from some limitations:
- The current implementation of the Extract Function refactoring does not cope with functions split in non-contiguous code fragments.
- The data flow analysis performed in the refactorings focus only on register variables. This in turns means that:
- The recovery of function arguments, function return values, and local variables from the processor stack is not yet supported by the current implementation of the concerning refactorings. Such recovery requires a data flow analysis of the stack and frame base pointer registers, which has not yet been coded. Therefore only code using function arguments, function return values, and local variables as registers is supported.
- Variable declarations are neither produced nor observed, as everything is considered a register.
- Global data in the input Assembly file is discarded.
- The implementation of several of many necessary the refactorings is still missing due to lack of time.