Riassumendo ciò che è stato detto in PM, per quanto riguarda il testing e la ricerca di vulnerabilità all'interno dei sistemi operativi, gli step e le conoscenze fondamentali sono:
1. Il funzionamento a basso livello della CPU (e quindi il linguaggio assembly, il funzionamento dello stack, della memoria heap ecc.). Per queste cose puoi far riferimento ai libri sul Reversing, li accomunano gli stessi concetti di base. Un libro interessante per Windows è "Windows internals", però anche "Reverse Engineering" e "Secret of reverse engineering" dovrebbe essere degli ottimi candidati.
2. Conoscere bene l'architettura che si ha di fronte, cioè l'effettivo funzionamento delle varie componenti del SO e come interagiscono tra loro. Siccome ci sono una mare di OS differenti mi è difficile dare dei riferimenti. Un ottimo spunto di inizio sono i libri "Sistemi Operativi" e "Architettura degli elaboratori".
3. Imparare le tecniche di Exploiting e Shellcoding, cioè come trovare vulnerabilità e come creare dei payload che permettano di eseguire quello che si vuole. I libri indicativi per cominciare sono: "The Art of Exploitation", "The Shellcoder's Handbook" e anche "PoC || GTFO" (più come lettura a tempo perso).