traditionally,
a hacker is someone who does something in a clever fashion.
i.e. I hacked together a script to gather event log details from 1000 servers, it saved me a whole week of logging onto them.
or, I hacked together a little website etc.
Whilst a cracker is someone who breaks into something, like a safe cracker...
however, sometime in the eighties or nineties some journalist somewhere confused the terms.
probably someone did a bit of hacking to make a neat tool for cracking.
anyway, popular media now defines the word hacker not as someone finding neat/elegant solutions to problems, (original MIT definition) but as someone who breaks into computer systems.
thus the meaning has changed, hacker and cracker can now be used interchangeably when talking about exploiting computers.
(though you still hack together clever contraptions, you don't crack them together...)