"Rather than hash every word in a dictionary every time they are executed, they could has them all just once, then save the hashes in a file."
That's (part of) why any competent password storage system uses salt. It completely defeats precomputed tables.
For your first "problem", ocl-hashcat hybrid attack deals with that nicely. It also does use the CPU quite extensively for the bits the CPU is good at, so not sure where you're getting the idea that none of the common crackers do so.
The ones I actually tried appear to have only been implemented as far as required to crack the author's own archives, then were posted as-is.
I'll have a look at ocl-hashcat, I had not heard of that one.
On my macbook pro, I have a core quad xeon, which has hyperthreading, so sorta kind 8 CPUs, and two GPUs. I don't recall whether one is amd or if they're both nvidia. I do know that apple made some macs that had both vendors' gpus.
That's (part of) why any competent password storage system uses salt. It completely defeats precomputed tables.
For your first "problem", ocl-hashcat hybrid attack deals with that nicely. It also does use the CPU quite extensively for the bits the CPU is good at, so not sure where you're getting the idea that none of the common crackers do so.