A New Direction for Software Reverse Engineering and Binary Code Retrofitting
A major obstacle in binary code based retrofitting is the immaturity of the reverse engineering tools. Current approaches to retrofit legacy software systems, mostly binary code patching based, have a number of drawbacks, including performance overhead and security issues. To the best of our knowledge, there are no binary reverse engineering tools that can disassemble a binary executable into assembly code which can be reassembled back in a fully automated manner. This limitation has severely restricted the application of reverse engineering techniques in legacy software retrofitting. Further, the analysis and transformation tools and ecosystems are disconnected and fragmented. Connecting the dots between the tools, infrastructures, and ecosystems will have great impact on software analysis and retrofitting.
To fill in the gap, we are considering a radically different approach by placing the recompilability as the first and topmost goal. We will further develop our preliminary study on Reassembleable Disassembling, with the similar design goal to preserve the recompilability while lifting the code to higher level languages or intermediate representations. The proposed reverse engineering technology can help augment legacy software systems with modern security mechanisms, allowing us to address a problem space that was previously intractable.