Суть взлома в том, что бы получить доступ к каким-то данным, что бы изменить их, или использовать.
Вот, например, сайт, нужно получить пароли его пользователей (зачем – отдельный вопрос). Пароли, как правило, хранятся в базе данных. Суть взлома в данном случае в том, что бы найти уязвимость, слабое место сайта, либо сервера, на котором находится сайт, которое позволило бы эти самые пароли заполучить. Вот только большинство способов сделать это известны, и разработчики сайтов стараются ликвидировать эти уязвимости, что бы затруднить взлом.
Или возьмём, например, приложение, которое требует регистрацию (как тот же WinRAR). Задача в том, что бы оно эту регистрацию перестало требовать. Суть в том, что нужно найти в коде программы то место, где проверяется наличие регистрации, и найти способ обойти эту проверку, либо вовсе удалить её. А сложность в данном случае в том, что в большинстве случаев анализировать приходится малопонятный для большинства людей ассемблерный код, да и разработчики тоже стараются всячески затруднить взлом своих программ, начиная от банальной обфускации, которая затрудняет понимание кода, и заканчивая всяческими онлайн-регистрациями, и т.п.