Il codice macchina è il livello più basso del software: istruzioni binarie che un processore esegue direttamente. A differenza del codice sorgente, non è pensato per essere letto dagli esseri umani. Rappresenta operazioni come il caricamento della memoria, la chiamata di routine e il salto a un nuovo indirizzo, il tutto nel set di istruzioni esatto che una specifica CPU comprende.
Nella sicurezza informatica, il codice macchina è importante perché ogni exploit, payload e componente firmware alla fine diventa questo. Gli attaccanti possono creare shellcode in codice macchina per eseguirlo dopo un bug di corruzione della memoria, nascondere il comportamento da una semplice revisione a livello di sorgente o eseguire il reverse engineering della logica di protezione da binari compilati. I difensori analizzano il codice macchina con disassembler, lo emulano in sandbox e verificano firmware o sistemi embedded in cui il codice sorgente potrebbe non essere disponibile. In un sistema operativo personalizzato o in un bootloader, lavorare a questo livello offre il controllo totale, ma elimina anche le reti di sicurezza, quindi piccoli errori possono trasformarsi in falle di sicurezza.


