What do most attacks on hash functions involve?

A. Finding Collisions
B. Pre-generating millions of hashes and comparing them to the plain text that generates it.
C. Really good random guessing.