The virus could send his own signature to the exchange. You would confirm something on Trezor but its signature would never even reach the exchange.
Without getting the correct signature the exchange would not send to that public key.
But what would be a correct signature? How would the exchange know that the address really belongs to you? The signature could be provided by the virus, using the attacker's private key.
Steps:
1: tell exchange your public key which then gets locked in
2: exchanges shows you which public key you submitted and to submit a message signed with the corresponding private key
2a: if you see some other address you abort
2b: if you see the correct address proceed to signing the message
3: send the signed message to exchange + 2FA time based PIN to authorize the withdrawal (hell, the message could be the PIN)
4: exchange sends bitcoins to the public key
What this does?
It prevents a virus from replacing the address you submit to an exchange as a destination for a withdrawal with an attackers address
What this doesn't do?
Helps you in anyway if an attacker has access to your account, obviously.