(...)
We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late.
This falls apart when one person controls >50% of the network's hashing power.
So from what I understand it works like this:
In case of a blockchain fork, the longest chain is considered the valid one, and with >50% hashing power, you can generate blocks faster than the rest of the network. Therefore, you can force a fork from an earlier block, catch up with the rest of the network, and still have your chain end up being the longest one. This invalidates all blocks on the other side of the fork and reverses the transactions included in those blocks.