Well you can't have a generic program to fix blue screens as there's no one cause for them. Many times they can be hardware related issues, which no software could fix.
As for what caused them, Windows and google can do that. Assuming you can read the blue screen, typically if you write down the "STOP: 0x00000000..." information as well as the file at fault(SPCMDCON.SYS or something like that) you can usually find what caused the problem on google.