Хакер от крэкера отличается так же, как слесарь-мастер "золотые руки" отличается от слесаря-вора "медвежатника".
Сын одного моего знакомого примернов возрасте 12 лет сформулировал это аналогичным образом.
Покупая что-то в каком-то компьютерном магазине, он доканал продавца всякими техническими вопросами так, что тот в задумчивости произнес: "Ты, наверное, хакер?!" На что пацан, с некоторой долей возмущения в голосе, сообщил, что он не хакер, а програмист. На последовавший полувопрос-полуутверждение:"Какая разница", - парнишка ответил:"Такая же как между снайпером и киллером"
Что касается различных определений "хакеров" и "крэкеров", то боюсь в настоящий момент невозможно выработать приемлимые формулировки, которые можно было бы использовать без дополнительных оговорок. Хотим мы или не хотим, но реально в настоящее время эти слова используются в обеих смысловых конструкциях, озвучивавшихся здесь и на интуитивно понятном уровне заключающихся в следующем: 1) хакер - исследователь, крэкер - правонарушитель; 2) и те и другие - правонарушители, различаются только специализацией (системы защиты информационных систем в широком смысле и системы защиты коммерческого ПО от нелицензионного копирования и использования). Не хочу спорить какой из двух подходов популярнее (о правильности, как мне кажется, в данной ситуации говорить вообще бессмысленно), но объективно в настоящее время терминология очевидно не устоялась даже на уровне смысловых подходов к определениям. Для целей криминологии, логичнее использовать второй подход, при этом в будущем может сложиться ситуация когда узкопрофессиональное значение слова будет отличаться от общеупотребительного (примеры этого можно найти и в современном языке).