IEEE Transactions on Software Engineering · 2015 · 23 citations · 14 references
ComputingComputer EngineeringComputer ScienceAlgorithmsCompilersProgramming LanguagesAbstract Syntax TreesControl-flow AnalysisData-flow AnalysisReverse EngineeringBinary Control-flow AnalysisLibrary Function IdentificationProgram Dependence GraphsProgram Dependency Graph AnalysisSoftware Reverse EngineeringSubgraph ExtractionSubgraph IsomorphismSubgraph Mining
Discontinuity and polymorphism of a library function create two challenges for library function identification, which is a key technique in reverse engineering. A new hybrid representation of dependence graph and control flow graph called Execution Flow Graph (EFG) is introduced to describe the semantics of binary code. Library function identification turns to be a subgraph isomorphism testing problem since the EFG of a library function instance is isomorphic to the sub-EFG of this library function. Subgraph isomorphism detection is time-consuming. Thus, we introduce a new representation called Reduced Execution Flow Graph (REFG) based on EFG to speed up the isomorphism testing. We have proved that EFGs are subgraph isomorphic as long as their corresponding REFGs are subgraph isomorphic. The high efficiency of the REFG approach in subgraph isomorphism detection comes from fewer nodes and edges in REFGs and new lossless filters for excluding the unmatched subgraphs before detection. Experimental results show that precisions of both the EFG and REFG approaches are higher than the state-of-the-art tool and the REFG approach sharply decreases the processing time of the EFG approach with consistent precision and recall.
14
Dependence graphs and compiler optimizations
David J. Kuck, Robert H. Kuhn, David Padua et al. · 1981 · 652 citations · Full text
Identifying similar code with program dependence graphs
Jens Krinke · 2002 · 622 citations
Chao Liu, Chen Chen, Jiawei Han et al. · 2006 · 423 citations