Research Article

Characterization of Program Behavior under Faulty Instruction Encoding

Table 4

Statistics on bit flips in opcode field.

Inst groupOriginal inst ⟶ changed instInjectedAverage rate (%)Sites may be affected
SDCBenignCrash (%)EIPReturn addressEFLAGSDest operandSource operand

Call-related instructionCALL ⟶ JMP1772.3%0%96.0
CALL ⟶ PUSH17731.6%16.9%50.8
MOV reg1, reg2 (MOV EBP, ESP) ⟶ OR reg1, reg21128.9%27.7%63.4
SUB reg, imm (SUB ESP, offset) ⟶ CMP reg, imm1084.6%26.9%67.6
SUB reg, imm (SUB ESP, offset) ⟶ AND reg, imm1086.5%14.8%77.8
SUB reg, imm (SUB ESP, offset) ⟶ OR reg, imm1086.4%26.9%64.9
PUSH ⟶ POP1513.3%4.0%92.7
PUSH ⟶ INC1513.3%6.6%90.1
LEAVE ⟶ DEC6200100
LEAVE ⟶ RET6300100
RET no argument ⟶ RET intersegment9000100

Control transfer instructionJMP ⟶ JCXZ6627.3%56.1%16.7
Jcc ⟶ Jcc (ttt-bit)63621.1%58.0%18.9
Jcc ⟶ Jcc (n-bit)21246.7%13.7%37.7

Arithmetic instructionCMP mem, imm ⟶ SUB mem, imm9112.1%76.9%11.0
CMP mem, imm ⟶ XOR mem, imm9113.2%75.8%9.9
CMP mem, imm ⟶ SBB mem, imm9112.1%75.8%12.1

Data transfer instructionMOV mem, reg ⟶ OR mem, reg38224.1%33.8%40.3
MOV mem, reg ⟶ LEA reg, mem35022.3%21.7%52.9
MOV mem, reg ⟶ MOV reg, mem38223.6%23.0%50.8
MOV reg, mem ⟶ OR reg, mem47815.7%43.3%40.8
MOV reg, mem ⟶ POP40112.7%13.7%73.3
MOV reg, mem ⟶ MOV mem, reg47815.9%25.7%56.0