Title | ||
---|---|---|
Static binary rewriting without supplemental information: Overcoming the tradeoff between coverage and correctness |
Abstract | ||
---|---|---|
Binary rewriting is the process of transforming executables by maintaining the original binary's functionality, while improving it in one or more metrics, such as energy use, memory use, security, or reliability. Although several technologies for rewriting binaries exist, static rewriting allows for arbitrarily complex transformations to be performed. Other technologies, such as dynamic or minimally-invasive rewriting, are limited in their transformation ability. We have designed the first static binary rewriter that guarantees 100% code coverage without the need for relocation or symbolic information. A key challenge in static rewriting is content classification (i.e. deciding what portion of the code segment is code versus data). Our contributions are (i) handling portions of the code segment with uncertain classification by using speculative disassembly in case it was code, and retaining the original binary in case it was data; (ii) drastically limiting the number of possible speculative sequences using a new technique called binary characterization; and (iii) avoiding the need for relocation or symbolic information by using call translation at usage points of code pointers (i.e. indirect control transfers), rather than changing addresses at address creation points. Extensive evaluation using stripped binaries for the entire SPEC 2006 benchmark suite (with over 1.9 million lines of code) demonstrates the robustness of the scheme. |
Year | DOI | Venue |
---|---|---|
2013 | 10.1109/WCRE.2013.6671280 | Reverse Engineering |
Keywords | Field | DocType |
program diagnostics,program verification,call translation,code segment,content classification,dynamic rewriting,energy use,memory use,minimally-invasive rewriting,reliability,security,speculative disassembly,static binary rewriting | Code coverage,Pointer (computer programming),Programming language,Code segment,Computer science,Binary code,Correctness,Theoretical computer science,Rewriting,Source lines of code,Executable | Conference |
Citations | PageRank | References |
8 | 0.46 | 13 |
Authors | ||
4 |
Name | Order | Citations | PageRank |
---|---|---|---|
Smithson, M. | 1 | 8 | 0.46 |
ElWazeer, K. | 2 | 8 | 0.80 |
Anand, K. | 3 | 59 | 3.18 |
Kotha, A. | 4 | 8 | 0.80 |