Assembly Language is Too High Level
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
Black Hat·58 min
Engineers explore architecture and security mechanisms for Stegospolit - Exploit Delivery With Steganography and Polyglots.
Main Stage·19 min
Willa Cassandra Riggins · abyssknight
Willa Cassandra Riggins and abyssknight demonstrate unconventional data exfiltration methods that bypass strict enterprise egress controls using novel covert channels.
Main Track 1·46 min
Philip Tully, Michael T Raggo
AI-powered steganography hiding data in social network images beyond human visual perception.


