Explore Capabilities and Effectiveness of Reverse Engineering Tools to Provide Memory Safety for Binary Programs
Explore Capabilities and Effectiveness of Reverse Engineering Tools to Provide Memory Safetyfor Binary Programs Any technique to ensure memory safety requires knowledge of (a) precise array bounds and (b) the data types accessed by memory load/store and pointer move instructions (called, owners) in the program. While this information can be effectively derived by compiler-level approaches much of this information may be lost during the compilation process and become unavailable to binary-level tools. In this work we conduct the first detailed study on how accurately can this information be extracted or reconstructed by current state-of-the-art static reverse engineering (RE) platforms for |
binaries compiled with and without debug symbol information. Furthermore, it is also unclear how the imprecision in array bounds and instruction owner information that is obtained by the RE tools impacts the ability of techniques to detect illegal memory accesses at run-time. We study this issue by designing, building, and deploying a novel binary-level technique to assess the properties and effectiveness of the information provided by the static RE algorithms in the first stage to guide the run-time instrumentation to detect illegal memory accesses in the decoupled second stage. Our work explores the limitations and challenges for static binary analysis tools to develop accurate binary-level techniques to detect memory errors.
Ruturaj Kiran is a third year PhD student at The University of Kansas. He is working under Dr. Prasad Kulkarni. His research interests include software reverse engineering, program analysis and instrumentation. He can be contacted at ruturajkvaidya@ku.edu