Косвенный залом программ.
-------------------------
Косвенный залом - довольно эффективный прием для изменения приз-
нака легальности в прикладных программах, запрета изменения счетчика
жизней в играх, и т.д.
Принцип косвенного залома состоит в периодическом изменении ячеек
памяти, принадлежащих программе; чаще всего, это выполняет резидент по
прерыванию таймера. Для выяснения адресов этих ячеек (адреса, естест-
венно, не абсолютные, а от PSP) применяют специальные программы - дам-
перы, которые скидывают на диск дампы памяти по нажатию какой-либо
комбинации на клавиатуре. В дамп, чаще всего, записывается вся память-
от PSP, включительно, до конца основной памяти. После получения нес-
кольких дампов, их побайтно сравнивают для определения изменившихся
ячеек и их смещений в файле. Программа сравнения выдает текстовый файл
примерно следующего содержания:
<сегмент1>:<смещение1> <байт из 1-го дампа> <байт из 2-го дампа> ...
<сегмент2>:<смещение2> <байт из 1-го дампа> <байт из 2-го дампа> ...
...
После этого остается найти в этом файле строки, содержащие необ-
ходимые данные, например счетчик жизней в игре:
<сегмент>:<смещение> 04 03 02 01
(Подразумевается, что дампы записывались после каждого уменьшения
числа жизней). Далее мы используем специальную резидентную утилиту,
которой передаем полученные данные:
<сегмент>:<смещение> 04
И во время работы программы она будет периодически заносить по
указанному адресу число 4, таким образом, число жизней никогда не
опустится ниже 4 (правда и не поднимется :-( ).
А теперь - то, ради чего заводился этот монолог: после получения
интересующих нас адресов, гораздо удобнее будет написать собственную
утилиту для залома. Для примера в файле MARIO!.PAS приводится такой
кряк для замечательной игрушки Mario!. Этот кряк делает героя бесс-
мертным, и дает ему возможность стрелять, не утруждая себя поисками
цветка. Также эта программа может послужить прототипом для написания
Ваших собственных ломалок.
Примечание: для получения и сравнения дампов был использован па-
кет HTOOLS by Oleg N. Kolesnikov.
PS: В недалеком будущем я планирую написать собственную удилиту
дампирования/сравнения.
С уважением, Евгений Загидуллин (WoZZa)
wozza@yandex.ru
|