Sì, il malware esiste in tutti i tipi di lingue. Spesso, però, alcuni dei bit più critici di molti exploit sono scritti non in C o C ++, ma piuttosto direttamente nel codice macchina, assemblati con cura spesso a mano. Questo potrebbe essere l'unico desiderio di ottenere il dimensionamento e l'allineamento corretti per quello che stai cercando di fare.
La distanza dal "metallo" è una questione di astrazioni e ipotesi.
Scrittura nel codice macchina non utilizza astrazioni e non crea presupposti.
La scrittura in assembly fornisce un certo livello di astrazione, ma ora hai a che fare con le ipotesi fatte dall'assemblatore. Quindi il codice potrebbe non essere allineato come vuoi, ma le istruzioni saranno prevedibili.
Scrittura in C aggiunge un altro livello di astrazione, ma ora sei limitato ai tipi di codice assembly che il compilatore C produrrà.
Scrivere in C ++ aggiunge un sacco di astrazione, in particolare per quanto riguarda la gestione della memoria e le chiamate di funzione. Ora il tuo codice potrebbe essere riorganizzato un po 'e potresti ottenere più codice nel tuo file binario di quello che hai effettivamente scritto. A seconda del target, questo non è in genere un problema, ma molti programmi (notoriamente il kernel di Linux, ma anche altri) evitano il C ++ perché non vogliono alcuna imprevedibilità.
Scrivere in Python cambia le cose in modo abbastanza significativo. Ora non stai nemmeno producendo il codice macchina, stai producendo le istruzioni per un interprete. Il modo in cui il codice viene eseguito dipende dalla versione e dalla build dell'interprete installato e le tue ipotesi devono essere ottimizzate di conseguenza. Puoi usarlo solo dove è installato un interprete python e solo in contesti in cui Python può essere invocato.
Utilizzi lo strumento per il lavoro. Molti exploit coinvolgono persino il codice Bash, che è molto meno capace di Python, ma è semplice ed è disponibile. Se sai davvero cosa stai facendo, allora questa non è nemmeno una domanda su cui vale la pena di riflettere; usi lo strumento che ottiene il risultato che stai cercando.