Sciweavers

ISSTA
2010
ACM

N-version disassembly: differential testing of x86 disassemblers

14 years 3 months ago
N-version disassembly: differential testing of x86 disassemblers
The output of a disassembler is used for many different purposes (e.g., debugging and reverse engineering). Therefore, disassemblers represent the first link of a long chain of stages on which any high-level analysis of machine code depends upon. In this paper we demonstrate that many disassemblers fail to decode certain instructions and thus that the first link of the chain is very weak. We present a methodology, called N-version disassembly, to verify the correctness of disassemblers, based on differential analysis. Given a set of n − 1 disassemblers, we use them to decode fragments of machine code and we compare their output against each other. To further corroborate the output of these disassemblers, we developed a special instruction decoder, the nth, that delegates the decoding to the CPU, the ideal decoder. We tested eight of the most popular disassemblers for Intel x86, and found bugs in each of them. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing...
Roberto Paleari, Lorenzo Martignoni, Giampaolo Fre
Added 15 Aug 2010
Updated 15 Aug 2010
Type Conference
Year 2010
Where ISSTA
Authors Roberto Paleari, Lorenzo Martignoni, Giampaolo Fresi Roglia, Danilo Bruschi
Comments (0)