Per capire veramente la sicurezza IT (e, più in generale, i computer), dovrai sapere come vanno le cose, quindi, prima o poi, dovrai imparare il montaggio per una o due architetture (preferibilmente più di due) . I codici di exploit di basso livello (ad esempio per overflow del buffer) non hanno senso se non si conosce l'assembly. Quindi passare a C, che è molto diffuso e un solito target per tali exploit. C è facile da imparare se conosci l'assemblaggio. Una volta che conosci l'assembly e C, puoi imparare lingue più complesse (ad esempio C # o Java); la tua comprensione del funzionamento interno della macchina ti guiderà attraverso le caratteristiche più "magiche" di tali linguaggi avanzati. Seguendo questo percorso, puoi provare i linguaggi di scripting, in cui ogni elemento linguistico nasconde un sacco di calcoli.
Questo ordine di apprendimento, da basso a alto livello, è un ideale ; Devo ancora incontrare una sola persona che si è attenuta rigorosamente ad essa. Nel mio percorso di apprendimento, ho iniziato con Basic ("versione 1.0", dal 1984) e poi passato all'assemblaggio (su una 6809E CPU ) perché Basic era veramente troppo lento sulla mia macchina (una CPU da 1 MHz non ha molti muscoli). Più tardi, ho imparato Pascal, poi C, e un po 'più di montaggio. In seguito, ho fatto un sacco di C, ho toccato molti altri linguaggi (ad esempio Caml, PostScript, Prolog, Objective-C, C ++), alcuni script (Unix sh
, Perl ...) e anche più assembly (su diversi distinti architetture). Anche più tardi, ho fatto un sacco di Java. Ho anche provato Forth, Scheme, un po 'più di montaggio. Ultimamente, ho fatto un po 'di C # (che è molto simile a Java), PowerShell, e ho sofferto di un focolaio di VB.
Ciò che è da ricordare è che ogni lingua ha le sue peculiarità; raggiungerai l'equivalente di programmazione di illuminazione se riesci a vedere oltre le particolarità di una lingua specifica e concentrati sull'algoritmo sottostante. Conoscere un sacco di lingue e le architetture ti aiuteranno molto. Evidenzierà inoltre quali caratteristiche linguistiche sono particolarmente "pericolose" da usare, con cui intendo inclini a innescare debolezze sfruttabili. Al contrario, se ti limiti a una sola lingua, allora sarai solo un mediocre professionista della programmazione e della sicurezza IT.
Esistono altri percorsi di apprendimento e alcune persone sono felici con loro. Molti programmatori di apprendisti iniziano con qualcosa di alto livello come Python e solo più tardi provano a vedere "sotto il cofano" come il computer fa davvero le cose . Io tendo a favorire il percorso dal basso verso l'alto perché è simile al percorso che ho seguito io stesso, ma non c'è assolutamente bisogno in questo.