0Pricing
Reverse Engineering & Binary Analysis Basics · Lezione

Endianness e ordine dei byte

Comprendete come i valori composti da più byte vengono disposti in memoria e nei file, perché l’endianness crea difficoltà ai principianti e come leggere correttamente i byte grezzi.

Endianness e ordine dei byte è una lezione Reverse Engineering & Binary Analysis Basics gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Reverse Engineering & Binary Analysis Basics, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Reverse Engineering & Binary Analysis Basics include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Bytes Have an Order

You learned how data is represented in binaries. But a number like 0x12345678 occupies four bytes, and the CPU must decide which byte comes first in memory.

That decision is called endianness.

Little-Endian

In little-endian, the least significant byte is stored first (lowest address).

The value 0x12345678 is stored as the bytes 78 56 34 12. x86, x64, and most ARM systems use little-endian.

Value:   0x12345678
Memory:  78 56 34 12   (low -> high address)

Big-Endian

In big-endian, the most significant byte is stored first.

The same value 0x12345678 is stored as 12 34 56 78. Network protocols and some older RISC chips use big-endian, so it is also called network byte order.

Value:   0x12345678
Memory:  12 34 56 78   (low -> high address)

Why It Matters in RE

When you see raw bytes in a hex editor, you must apply the correct endianness to recover the real value. Misreading endianness turns a valid pointer into garbage.

  • Reading addresses
  • Parsing file headers
  • Interpreting struct fields

Reading a 4-Byte Integer

Suppose a hex dump shows the bytes 2A 00 00 00. On a little-endian machine that is the integer 42, not 0x2A000000.

Always know the platform before interpreting.

Bytes:  2A 00 00 00
LE int: 0x0000002A = 42
BE int: 0x2A000000 = 704643072

Seeing It in Code

This C snippet inspects the running machine's endianness by aliasing an int through a byte pointer.

#include <stdio.h>
int main(void) {
    unsigned int x = 0x12345678;
    unsigned char *p = (unsigned char *)&x;
    printf('First byte: %02X\n', p[0]);
    return 0;
}

Network Byte Order

Protocols standardize on big-endian so machines of different architectures agree. C provides conversion helpers like htons and ntohl.

When reversing network code, watch for these calls; they reveal which fields are multi-byte.

uint16_t port = htons(8080);  // host -> network order

Byte Swapping

Converting between endian formats means reversing the byte order. Tools and disassemblers often offer a one-click swap, but understanding the mechanism is essential.

uint32_t swap32(uint32_t v) {
    return ((v & 0xFF) << 24) |
           ((v & 0xFF00) << 8) |
           ((v >> 8) & 0xFF00) |
           ((v >> 24) & 0xFF);
}

Endianness in File Formats

Many file formats declare their endianness in a magic field. ELF stores EI_DATA in its header; TIFF starts with II (Intel/little) or MM (Motorola/big).

Reading this field first tells you how to parse the rest.

Common Pitfalls

Beginners often:

  • Read bytes left-to-right and forget to reverse for little-endian
  • Assume the target matches their own machine
  • Mix endianness mid-struct

When a pointer looks absurd, suspect endianness first.

Tools That Show Endianness

Most analysis tools let you toggle interpretation. In a hex editor you can flip between little- and big-endian data inspectors; disassemblers display the architecture's native order automatically.

When carving raw structures, always confirm the tool's current setting matches the target.

xxd -l 4 sample.bin
# 00000000: 2a00 0000   -> LE int = 42

Quick Check

How is the value 0x12345678 stored on a little-endian machine?

Recap

Endianness decides byte order for multi-byte values:

  • Little-endian: least significant byte first (x86/x64)
  • Big-endian: most significant first (network order)
  • Check the format's endianness field before parsing

Mastering this stops the most common 'garbage value' confusion in binary analysis.

Domande Frequenti

La lezione «Endianness e ordine dei byte» è gratuita?

Sì — il testo completo di «Endianness e ordine dei byte» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Reverse Engineering & Binary Analysis Basics, passa a CoddyKit PRO. Il corso Reverse Engineering & Binary Analysis Basics include 4 lezioni in totale.

Cosa imparerò in «Endianness e ordine dei byte»?

Comprendete come i valori composti da più byte vengono disposti in memoria e nei file, perché l’endianness crea difficoltà ai principianti e come leggere correttamente i byte grezzi. Eserciti Reverse Engineering & Binary Analysis Basics con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Reverse Engineering & Binary Analysis Basics?

Non è richiesta alcuna esperienza precedente. Reverse Engineering & Binary Analysis Basics su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Endianness e ordine dei byte»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Reverse Engineering & Binary Analysis Basics?

Sì. Ogni lezione Reverse Engineering & Binary Analysis Basics include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Panoramica delle architetture CPU
  2. Rappresentazione dei dati nei binari
  3. Formati comuni dei file binari
  4. Endianness e ordine dei byte
← Torna a Reverse Engineering & Binary Analysis Basics