Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #80, АВГУСТ 2005 г.

Крякинг — это просто

Степан Ильин 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. В появившемся списке ты сразу же увидишь текст сообщения, выводимый в окне нага, а двойным кликом — сможешь перейти туда, где он используется. Но мы пойдем по другому пути и изучим еще один ключевой прием, который активно используется во время взлома программ.

Назад на стр. 080-070-3  Содержание  Вперед на стр. 080-070-5