Alcune cose veloci fuori mano, come so che questo tipo di domande spesso hanno un background dannoso.
- Non sto cercando di eseguire qualcosa in un formato di file (jpg)
- Non sto provando semplicemente a raggiungere l'obiettivo finale (cioè far sembrare qualcosa come un jpg ma esitare)
- Sto semplicemente cercando di imparare la differenza tra il modo in cui un computer analizza le informazioni
Quindi, dal mio punto di vista, un computer che si occupa di un formato di file di dati, come JPG, PDF, ecc. Analizzerà solo le informazioni in quello che essenzialmente è un contenitore aderente, immagino di specifici layout / specifiche. Comunemente si sente la differenza tra un formato di file di dati e un eseguibile è che il computer non "eseguirà (eseguirà)" il file di dati. La mia domanda è: come fa il computer a sapere cosa leggere e cosa eseguire? Qual è la differenza? La mia immagine mentale di un computer è qualcosa che legge le istruzioni passo dopo passo. Se nel mezzo di un jpg che stava analizzando vedeva shellcode per far apparire una finestra di messaggio, perché non si attiva quando viene letto?
Sono consapevole che le cose potrebbero essere eseguite tramite exploit per il software, ingannando il parser - forse tramite buffer overflow ecc. Ancora una volta, non tanto interessato all'obiettivo finale di come può essere raggiunto. Sono più interessato a come il computer può dire cosa deve essere letto, cosa deve essere eseguito e come si può ottenere la lettura senza esecuzione.