Skip to content

Assembly Language is Too High Level

XlogicX

Demonstrating that x86 assembly instructions have multiple valid machine-code representations.

Summary

Assembly and Machine Code

Assembly language is often described as one-to-one with machine code, but this is incorrect. Assembly instructions can have multiple valid machine-code representations.

Redundant Encoding

Single assembly instructions can encode as different machine code bytes, and different machine code can decode to equivalent instructions. Understanding these redundancies reveals security implications.

IRASM Tool

The Interactive Redundant Assembler (irasm) is released, allowing exploration of alternate machine-code representations. Tool output can be used in tools like mona for self-modifying code and exploitation.

Applications

Use cases include creating alternate shellcode representations, improving tool flexibility, and applying stego techniques. Understanding machine-code redundancy provides additional options for sophisticated exploitation and evasion.

Related talks

Main Stage·19 min

  • DEF CON
  • Red Team
  • Date: Aug 2016
  • Location: Las Vegas

Willa Cassandra Riggins · abyssknight

Willa Cassandra Riggins and abyssknight demonstrate unconventional data exfiltration methods that bypass strict enterprise egress controls using novel covert channels.

data-exfiltrationcovert-channelssteganography+2