. . . what if they had already pre-calculated hashes for the corrupted blocks and just dropped them in place. It seems like they wouldn't need 51% of the computing power if they're able to trick more than 51% of the existing computing power into believing their version of events...
Like I said, to get any bitcoin client to accept the modified blockchain as valid, they'd have to pre-calculate the hash for the block they want to modify AND every block that has been created since that corrupted block was first created. The only way to create all those hashes is to "mine" them (Brute force calculation of hashes modifying a nonce until the resulting hash meets the target difficulty). And the only way to do that fast enough to catch up with the "valid" blockchain is to have more hashing power than the rest of the entire network combined.
Just modifying a single transaction in a single block will cause all the clients to reject it since the hash no longer matches.
Just modifying a single transaction and recalculating a single hash will cause all the clients to reject it since the hash doesn't meet the target difficulty.
Just modifying a single transaction and "mining" a hash that matches the target difficulty will cause all the clients to reject it since the hash doesn't match the previous_hash in the next block.
Just modifying a single transaction and "mining" a hash that matches the target difficulty and overwriting the previous_hash in the next block will cause all the clients to reject it since the next block hash no longer matches the contents of that block.
And so on, and so on until you've re-"mined" all the necessary hashes up to the current block.