Our binary reduction tools automatically rewrite binary executables and libraries to strip out unused functionality, as well as enabling users to selectively remove features. This improves efficiency and reduces attack surface. We describe two of our binary software reduction techniques below.
This binary rewriting software transformation takes as input a COTS binary executable and a set of entry points, and rewrites the executable to remove all code not transitively reachable from the given set of entry points. We calculate reachability by following the control flow graph of the binary and identifying symbolic references. This is particularly useful for reducing library code; libraries often include much more functionality than what is needed for any particular application.
This binary rewriting software transformation takes as input a COTS binary executable and a test suite, and rewrites the executable to remove all code which is not required to continue to pass the test suite. The search for a minimal subset of the code required to retain test-suite functionality is performed quickly and deterministically using delta-debugging. This is a speculative transformation which can achieve very significant reduction in program size but will likely break untested program behavior.
This material is based upon work supported by the Navy and the Office of Naval Research under Contract(s) No. N68335-17-C-0700. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Navy or the Office of Naval Research.