Исследование защиты игры Limbo. Кейген / Хабрахабр. Всем привет. Многие знают об этой замечательной игре — LIMBO! Вы даже наверняка покупали ее в Стиме, или качали с торрентов. Но, как всегда, мне было этого мало, и я, из спортивного интереса, решил изучить ее защиту. Так и появился кейген к игре LIMBO.
В этой статье я расскажу и покажу вам, как я это делал. Прежде, чем начинать, помните: все действия вы выполняете на свой страх и риск.
Уважайте работу геймдевелоперов. Этап первый: Поверхностный осмотр пациента. Полный инсталлятор игры можно скачать здесь. Установив игру, первым делом, как обычно, выясняем, на чем написан главный исполняемый файл.
Я воспользуюсь для этого Exe. Info PE. Видим: Visual Studio 2. IDA Pro прекрасно с ней справляется, поэтому туда и отправим. Я буду пользоваться связкой IDA Pro + Hex. Rays, т. е. Запустим игру: Видим волшебную надпись .
Так же можете алкоголь 120 кряк скачать бесплатно. Название: IDA Pro Advanced v5.5 + Hex Rays Decompiler v1.1 Разработчик: www.idapro.ru Версия: 5.5 and 1.1 ОС: Windows all version. Сегодняшнее утро оказалось очень позитивным, в сеть утекла IDA Pro 6.8, собственно как всегда к ней прилагаются лучики =) Ссылки. Вся информация предоставляется исключительно для ознакомления. За любые неправомерные действия с софтом, администрация ресурса никакой ответственности не несет. Мультипроцессорный дизассемблер работающий под Windows, Linux и Мас.
Далее нас ожидает нежданчик (по крайней мере, я, когда первый раз выбирал этот пункт меню, я ожидал увидеть поле ввода на графическом движке игры, или типа того, а оказалось все гораздо проще..): Да, да! Именно обычное окошко! Попробуем что- нибудь ввести, и нажать Unlock. Как- то так: Ну что ж, поищем по тексту в IDA, чтобы затем от него отталкиваться, и найти место проверки. И тут меня ожидал облом! То же самое сказал мне и поиск по содержимому через Total Commander.
Возможно, сообщение зашифровано. Можно попробовать найти вызов окна отталкиваясь от вызова Message. Box. A/W. Но, я пошел другим путем, который, почему- то, мало где в статьях описывают. Этап третий: Нажми меня. Мы поступим следующим образом.
Откроем любой удобный Вам редактор ресурсов, затащим в него ехе- шник, найдем окошко диалога ввода ключа, а в нем — кнопку Unlock. Сказано — сделано: На скрине я выделил ID нашей кнопки. По нему мы и будем искать, где именно обрабатывается нажатие.
Бесплатным ты его будешь вечность анадизировать, Ida pro демки думаю хватит или кряк качай. Так же можете алкоголь 120 кряк скачать бесплатно Название: IDA Pro Advanced v5.5 + Hex Rays Decompiler v1.1 Разработчик: www.
Откроем Иду, нажмем Alt+I (Search - > immediate value..), введем число 2. А нашлось вот это: Видите те строчки, которые Ида пометила как ; n. IDDlg. Item? Двойным кликом переходим на первый из таких результатов: Зеленой стрелкой я обозначил место, на которое указала Ида, а чуть ниже (привычка: прокручивать выше/ниже искомого места) — стрелкой обозначено место вызова одной интересной API- функции: Get. Dlg. Item. Text. A. Судя по названию по MSDN, эта функция получает текст указанного элемента окна в буфер. Почему я сразу не искал по ID поля ввода?
Можно, конечно и так было сделать. Но, мало ли какие действия происходят после нажатия кнопки, еще до вычитывания текста из поля. Прокручиваем листинг, чтобы видеть место вызова API- функции целиком: Мой . Давайте проверим догадку. Видим там прыжок на еще один адрес — переходим по нему.
Видим нормальный код, поэтому смело жмем там F5 (вызываем Hex. Rays Decompiler). Результат декомпиляцииbool . Для этого становимся на имя функции и жмем там клавишу Y (Set item type). Исправляем тип и имя входного параметра (я обозвал его как key).
Далее. Для этого на каждом из таких чисел нажмем R (Char). Уже лучше: if ( strlen(key) != 3. Переименовываем нажатием на имени клавиши N (Name). Замечаем, что в цикле происходит взятие каждого символа из ключа, и передача его в пока неизвестную нам функцию. Предлагаю выяснить, что это за функция.
Двойным щелчком переходим в нее. Видим там вызов еще одной функции, переходим туда.
И, вот оно — обработка одиночного символа! Теперь возвращаемся назад клавишей Esc до основной функции.
Замечаем, что IDA сама переопределила для нас тип результата возвращаемого функцией обработки символа. Именуем дальше, обозначаем типы, и получаем следующий код цикла: Цикл . Видим, что переменная, обозначенная у меня как itr, совершенно не инкрементируется. Чтобы выяснить, что на самом деле происходит, жмем ПКМ - > Copy to assembly, и смотрим, где же используется наша itr. Выясняем: она инкрементируется прямо в этом цикле (чего и стоило ожидать), а до цикла — обнуляется.
Учтем это при написании кейгена. Теперь вторая часть функции проверки ключа. Результат обработки (пусть и на скорую руку, но читаемый): crc. Писать я буду, вопреки здравому смыслу и выдаче Hex. Rays, на Delphi, а Вы можете писать на том языке, который проще именно Вам.
Путем отладки выясняем произошедшее: Игре нужен ключ в 3. Берется по четыре символа из ключа (не учитываются дефисы).
Каждый из них пропускается через функцию convert. Это непростая задача, но, и она решаема в большинстве случаев. P. S. Главная идея, которую я хотел донести: кейген — не такая и сложная штука, если есть мозги, и желание вместе с усидчивостью.