Infoscience (Ecole Polytechnique Fédérale de Lausanne) · 2010 · 26 citations · 7 references
ComputingComputer ScienceComputer SystemsFormal MethodsOperating SystemsProgramming LanguagesControl-flow AnalysisData-flow AnalysisType CheckingBinary AnalysisBinary Control-flow AnalysisBinary Disassembly
Most closed source drivers installed on desktop systems today have never been exposed to formal analysis. Without vendor support, the only way to make these often hastily written, yet critical programs accessible to static analysis is to directly work at the binary level. In this paper, we describe a full architecture to perform static analysis on binaries that does not rely on unsound external components such as disassemblers. To precisely calculate data and function pointers without any type information, we introduce Bounded Address Tracking, an abstract domain that is tailored towards machine code and is path sensitive up to a tunable bound assuring termination. We implemented Bounded Address Tracking in our binary analysis platform Jakstab and used it to verify API specifications on several Windows device drivers. Even without assumptions about executable layout and procedures as made by state of the art approaches, we achieve more precise results on a set of drivers from the Windows DDK. Since our technique does not require us to compile drivers ourselves, we also present results from analyzing over 300 closed source drivers.
7
Manuvir Das, Sorin Lerner, Mark Seigle · 2002 · 554 citations
Analysis of pointers and structures
David Chase, Mark N. Wegman, F. K. Zadeck · ACM SIGPLAN Notices · 2004 · 437 citations
Thorough static analysis of device drivers
Thomas Ball, Ella Bounimova, Byron Cook et al. · 2006 · 378 citations
Disassembly of executable code revisited
Benjamin Schwarz, S. Debray, Gregory R. Andrews · 2003 · 190 citations