Хакер - как много в этом словеАвтор: Roman N. [Quest] vague@mail.ru
Предисловие от MyPsion.Ru. Мы понимаем, что ломать программы с целью коммерческой выгоды нехорошо, и описывать процедуру - тоже. Однако данная статья носит исключительно познавательный характер, не призывает к вскрытию и предназначена только для личного ознакомления. Современные программы имеют защиту от метода декомпиляции, описываемого в данной статье. Взятая для примера игра S5Hearts давно не поддерживается автором и этот проект "умер". Вы ведь все равно не собирались ее покупать? ;)
Хакер - как много в этом слове... Если вы снизу вверх смотрите на людей, которых принято называть хакерами, то вам, наверное, интересно будет узнать, как же они работают. Этот материал носит чисто ознакомительный характер и не является пособием для "серьезной деятельности". Для примера взята игра S5Hearts. Данная игра написана в 1997 г. на языке OPL и, как следствие, не обладает серьезной защитой от вскрытия. Все современные программы лишены этого "недостатка".
Итак, начнем. Для работы нам понадобится программа RevTrans. Данная программа выполняет функцию Re-Translation OPL-программ, то есть перевод программ в первоначальный вид (до трансляции) для возможности редактирования в стандартном OPL-редакторе. Надо заметить, что многое из того, что создается для Psion, пишется на OPL-языке.
Запускаем RevTrans, открываем с его помощью файл "Heart.app". Как правило, весь программный код всегда находится в "*.app" файле. После его открытия вы можете ознакомиться со структурой данного файла (команда List PROCs). Как видим, данная программа состоит из 46 подпрограмм, под вторым номером находится подпрограмм "Checkr", что, вероятно, является "Check Registration" (проверка регистрации). Теперь идем в меню и нажимаем команду Write OPL (записать OPL). Появится меню, где надо указать, куда записать файл, и с какой по какую подпрограмму записать. Если вы не уверены, где находится проверка регистрации, то оставьте как есть, то есть записать с 1 по 46.
Я же поставлю с 2 по 2, так как думаю, что программа регистрации находится именно в подпрограмме "Checkr". Нажимаем "OK". В случае, если появится сообщение "Concatenated string too long", означающее, что программа не может ретранслировать данную строку по причине ее длины, то всегда нажимайте "No more alerts" (не показывать больше это сообщение), и программа продолжит работу. После завершения ретрансляции, выйдите из RevTrans и откройте получившийся OPL-файл. Мы должны найти строки, где происходят "математические вычисления", особенно если там присутствует переменная с именем Nam$, Code% или сообщение "Registered". Нашли - как видим, здесь находится небольшая процедура. Немного разобравшись с операторами, присутствующими здесь, вы поймете ее принцип работы. Вот список того, что присутствует в этой программе регистрации.
Name$ - имя, которое вы вводите при регистрации.
Step% - переменная числа, изначально равна 1, но в зависимости от количества букв в имени увеличивается.
Rnum1% - число, получившееся после суммирования всех кодов букв имени; код каждого символа соответствует коду в таблице ASCII.
Rnum2% - ключ для вычисления вашего кода при регистрации, действует по формуле (9175-(сумма кодов каждого символа имени)*3).
Теперь мы хотим найти по этой формуле код, необходимый для регистрации, скажем, для имени Roman. Находим сумму кодов символов. В таблице ASCII (в десятиричном исчислении) это соответствует для R-82, o-111, m-109, a-97, n-110. Находим их сумму (82+111+109+97+110), итого - 509. Подставим получившееся значение в формулу ключа (9175-509)*3 - получилось 25998. Теперь можно загрузить программу Hearts и в регистрации указать имя - Roman; code - 25998. Игра зарегистрирована!
Но не думайте, что все программы можно будет вскрыть этим способом - программисты тоже кушать хотят. И для защиты свои программ используют самые различные способы защиты. Попробуйте, скажем, ретранслировать игру Psi-Jong - она у вас ретранслируется, только в одном месте она не сможет ретранслировать строки, угадайте какие. Тут все зависит от ваших способностей, так как не существует защиты, которую нельзя было бы вскрыть. Вопрос только в том, кто окажется умнее: программист, пишущий программу с защитой, или хакер, вскрывающий эту защиту.
Дата статьи: | 24 ноября 2000 г |
« Назад в каталог | Обсудить в конференции »
|