Indeed. And this complicated little distinction is complicated even further by the fact that "cracker" happens to be a derogatory term for poor white people in the American South. Explaining to people that they're using the wrong word, and the right word they ought to be using is a word they always thought was a semi-offensive sort of ethnic slur, is almost impossible, and probably not worth the effort.
Personally, I think we've reached the point where computers are more demystified, and we can talk in neutral terms with people about these things. To me, being a hacker means taking things apart and learning how they work; that's a morally neutral act. You can take things apart and learn how they work in order to steal money, or in order to build a great system for helping deliver donated meals to the homeless, or in order to fix something that's broken.
Forgive me for taking this in a tangential direction, but I wish that with language we also transmitted unique "concept IDs" along with each word or phrase that would help to disambiguate what we mean. Like when you see a single word linked in a sentence and you mouse over it to see the URL (or in the case of Wikipedia, the article/"concept" it links to). It would be a feeling like that.
Personally, I think we've reached the point where computers are more demystified, and we can talk in neutral terms with people about these things. To me, being a hacker means taking things apart and learning how they work; that's a morally neutral act. You can take things apart and learn how they work in order to steal money, or in order to build a great system for helping deliver donated meals to the homeless, or in order to fix something that's broken.