
Долгоиграющие прогию Методы снятия защиты с шароварных прог
Xakep, номер #034, стр. 034-052-4
Конкретный взлом
Если ты хочешь избавиться от всех предупреждений о регистрации, получить все возможности шаровары и реально зарегить ее, то тут уже без дизассемблера и машинных кодов не обойтись. Я постараюсь тебе дать основы этого взлома и в то же время не вдаваться в глубину. То, что я расскажу, будет достаточно для любого программера. А если ты несовместим с кодингом, то этого будет достаточно для взлома только простой защиты.
Итак. Для работы нам понадобится:
1. W32dasm (желательно не меньше версии 8.9), можно найти на www/expage.com/page/w32dasm
2. Turbo Debugger (от фирмы Borland) можно найти на любом диске со старым Borland C++ или Pascal.
3. DiskEditor (можно любой вариант, но я люблю от дяди Нортона).
Запусти W32dasm. Выбери из меню Disassembler пункт «Open file to Disassemble...». Открой необходимый .ехе файл. Я опять возьму CyD Shell. Прога быстро превратит машинный код в assembler. Теперь переходим к самому взлому. Для начала нужно попробовать найти коды. Для этого выбери меню Search->Find Text. Введи слово Regist и запусти запуск. Когда такое слово будет найдено, осмотрись вокруг. Если не видишь ничего интересного, то продолжай поиск. Ты должен найти простой текст, связанный с регистрацией.
Посмотри на рисунок. Там показан скрин результата моего поиска. W32dasm нашел текст: "Enter registration code". Я думаю, что это то, что надо. Если ты рубишь в языке assembler, то можешь просмотреть команды. Если с этим у тебя проблемы, то смотри на строки, начинающиеся с символа "*" (звездочка). Итак, смотрим на такие строки чуть ниже. Следующая строка абсолютно ничего не говорит. Опускаясь еще ниже, ты сможешь увидеть строку:
* Possible StringData Ref from Code Obj ->"RGCD1"
Самое интересное здесь находится в кавычках - "RGCD1". Если ты не рубишь в программинге, то по методу научной дедукции ты сможешь догадаться, что введенный код будет сравниваться с "RGCD1". Это легко, потому что мы сначала нашли сообщение: "Введите регистрационный код", и тут же строка непонятных символов. Что мешает проверить эту строку как регистрационный код?
Ну а если ты программер, то по коду ты сможешь узнать, что первые 5 символов введенного ключа должны быть "RGCD1". Остальные символы могут быть любыми. Это идеальный вариант, когда происходит простое сравнение. Хуже, когда используется математика. Но давай посмотрим немного дальше. Ты найдешь следующие строки: "Software", "CyD", "CyD Desktop" и "Product". Тебе не напоминает ли это реестр? А мне напоминает :). Software\CyD\CyD Desktop - путь в реестре, а Product - строковый параметр. Почему строковый? Да потому что еще ниже ты найдешь строку - "23sa4D24sf2s3g45s". Это значит, что если такая строка есть в реестре, то прога зарегистрирована. Вот так. Даже если для проверки кода используется математика, ты сможешь ее обойти, если найдешь такой идентификатор. Но это все простейшие варианты защиты. Несмотря на простоту, они используются очень часто. Я сам использую такие методы, потому что тратить время на сложные вещи нет смысла. Все равно взломают :).