Крякинг — это просто Степан Ильин aka Step Хакер, номер #080, стр. 080-070-4 В нашем случае все еще проще. Функция проверки является стандартной функцией сравнения двух строк lstrcompareA, которой через стек передаются два параметра: :00401287 689C304000 push 0040309C * Possible StringData Ref from Data Obj ->"m0tNaF-EmKCARc" :0040128C 6829304000 push 00403029 * Reference To: KERNEL32.lstrcmpA, Ord:02D6h 00401291 E8BC000000 Call 00401352 Первой командой push в стек заносится адрес веденной нами строки, а второй — настоящий серийник. W32Dasm любезно подсказал, что по этому адресу находится строка «m0tNaF-EmKCARc». Это и есть серийник :). [убираем наги] Наг — это назойливое окошко, которое присуще любой триальной программе. Смысл окошка — напомнить пользователю о том, что программисты тоже любят кушать, поэтому покупка программы была бы очень кстати. Общий принцип таков. Во время запуска приложения, осуществляется простая проверка — зарегистрирована ли программа или нет. Индикацией того, что приложение зарегистрировано, может быть наличие некоторого файла, ключа реестра или, что более вероятно, определенное их содержание. Если в результате проверки окажется, что прога уже зарегистрирована, то никакого наг-окна не выводится, и программа продолжает обычную работу. В противном случае управление передается процедуре, которая выводит наг на экран и в большинстве случаев требует нажатия клавиши для продолжения работы. Как правило, убрать наг-окно не представляет труда, в этом легко убедиться на примере FaNt0m's CrackMe #2. После запуска проги пользователя одаривают не одним, а сразу двумя наг-окошками, но задача от этого практически не усложняется. К сожалению, возможность регистрации не предусмотрена, поэтому единственное, что остается сделать, — это вручную убрать из кода «лишние» фрагменты программы. Или точнее говоря, вызовы процедур, выводящих на экран эти назойливые сообщения. В принципе это можно сделать с помощью дизассемблера и HEX-редактора, но удобнее и уместнее все-таки использовать отладчик (или и то, и другое одновременно) — скоро ты в этом убедишься. Итак, запускай OllyDBG и с помощью меню открой файл CRACKME2.EXE. В принципе найти нужный фрагмент кода, содержащий вызовы «лишних» процедур, можно по описанному ранее алгоритму. Для этого нужно кликнуть правой мыши в окне с ассемблерным кодом и в контекстном меню выбрать пункт Search for -> All referenced text strings. В появившемся списке ты сразу же увидишь текст сообщения, выводимый в окне нага, а двойным кликом — сможешь перейти туда, где он используется. Но мы пойдем по другому пути и изучим еще один ключевой прием, который активно используется во время взлома программ. |