It's a fact about the human vocal tract that consonant clusters that differ in voicing are difficult to pronounce, because changing from voiced to voiceless consonants requires independent movement of the larynx, which can be difficult to switch on and off at the millisecond timing required for consonant clusters.
That's why the rules of English consonant clusters (English Phonotactic constraints) forbid coda clusters (a cluster at the end of a word) in which obstruents (/s t z d p b k g/ etc) differ in voicing. Therefore, we do not find */zt/, */sd/, */kd/, */gt/ etc., at the end of English words. (These are 'sounds', not 'spelling', don't confuse them.)
There are some reliable rules for the pronunciation of the -ed.
- When the sound preceding the -ed is voiced (/b m v n z l r d͡ʒ g/ etc., except /d/), the -ed is pronounced /d/. So in words like robbed, roamed, buzzed, called, moved, changed, bugged etc., the -ed is pronounced [d]
- When the preceding sound is voiceless (/p f s ʃ t͡ʃ k/ etc., except /t/), the -ed is pronounced [d]. Examples: mopped, miffed, dished, passed, reached, hooked etc., have /t/ at the end.
- When the preceding sound is /d/ or /t/, the -ed is pronounced [ɪd] as in wanted, ended, amended etc.
The -ed in the word 'hooked' is preceded by a voiceless sound, so it's pronounced [hʊkt].