Недавно добавленные исходники

•  TDictionary Custom Sort  1 838

•  Fast Watermark Sources  1 870

•  3D Designer  3 289

•  Sik Screen Capture  2 293

•  Patch Maker  2 472

•  Айболит (remote control)  2 293

•  ListBox Drag & Drop  1 891

•  Доска для игры Реверси  69 542

•  Графические эффекты  2 492

•  Рисование по маске  2 026

•  Перетаскивание изображений  1 591

•  Canvas Drawing  1 589

•  Рисование Луны  1 606

•  Поворот изображения  1 224

•  Рисование стержней  1 276

•  Paint on Shape  907

•  Генератор кроссвордов  1 419

•  Головоломка Paletto  1 105

•  Теорема Монжа об окружностях  1 450

•  Пазл Numbrix  1 025

•  Заборы и коммивояжеры  1 301

•  Игра HIP  864

•  Игра Go (Го)  829

•  Симулятор лифта  960

•  Программа укладки плитки  803

•  Генератор лабиринта  963

•  Проверка числового ввода  863

•  HEX View  998

•  Физический маятник  867

•  Задача коммивояжера  918

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Корсары проклятье дальних морей - Пример взлома CD


Автор: Fess

Target: Корсары проклятье дальних морей

Tools:

  • Немного мозгов
  • Win32Dasm 8.93
  • Любой файловый менеджер
  • Hex-редактор

Пролог

Вступление:

Наконец-то заработал CD-ROM!!! Дали мне тут гамес Корсары от известной в России фирмы 1С. Насколько мне известно игры от этой фирмы за- щитой не блещут. Установилась хорошо, вот только без кампакта работать не хотела. Что ж придется помочь. А заодно вот решил накатать тьюториал, как иллюстрация к другому моему тьюториалу от 31.05.2002 с названием "Практи- чески все о взломе CD". Найти можно на vallkor.chat.ru.

Что за прога:

Вполне приличный гамес типа RPG. Минимальные системные требования: PII-233МГц, 64 Мб оперативки, 3D-видео карта, 800 Метров на ЖД, Win9x.

Начало

Первое, что надо сделать это проверить, каким методом гамес проверяет наличие CD. Вариантов 3: использует функцию GetDriveTypeA, пишет букву CD в файл, другим способом. Первые два наиболее популярны. Проверяется это так, заходим в "Система" Панели управления и изменяем имя вашего CD-ROM'a на любое другое. У меня был K: я заменил на Z:. Перезагружаем. И запуска- ем гамес, компакт с игрой, оставив в лотке CD-ROM'a. Заработала. Значит тип защиты (скорее всего номер 1).

Взлом

Засовываем запускающийся файл engine.exe в Win32Dasm и ищем там, в разделе Импорта строку KERNEL32.DLL GetDriveTypeA. К сожалению, ее там не оказалось. Стукните рукой по CD-ROM'у может заработает. И тут нам приходит в голову, что если ее тут нет, значит она может быть где- нибудь еще, например, в динамической библиотеке (dll). Запускаем любой фаловый менеджер (я предпочитаю клоны DosNavigator'a, в частности NDN). Заходим в каталог куда мы установили Корсары нажимаем Alt-F7. Выбираем такие опции: Поиск в текущем каталоге, Рекруссивный поиск. В Имя файлов пишем *.dll в Содержащий текст пишем GetDriveTypeA. И запускаем, если все сделано правильно находится один файл core.dll, его и дизассемблируем.

Опять смотрим в таблицу импорта. Нашлась строка, нажимаем на нее два раза и вываливаемся тут.


:1000C86A 8D6C1C18      lea ebp, dword ptr [esp+ebx+18]
:1000C86E 55            push ebp

* Reference To: KERNEL32.GetDriveTypeA, Ord:0104h
                          |
:1000C86F FF1534700110  Call dword ptr [10017034]
:1000C875 83F805        cmp eax, 00000005
:1000C878 7579          jne 1000C8F3
:1000C87A 8BFD          mov edi, ebp

Ага, это почти 100% то, что нам нужно, если посмотреть в моей общей статье (см. выше) вид функции GetDriveTypeA, то можно узнать, что она во- звращает в eax 3, если имя ЖД и 5, если имя CD. То есть здесь нам надо просто заменить по адресу в файле C877 число 05 на 03.

Посмотрим дальше, может еще что-нибудь есть.


:1000C8DC 895704        mov dword ptr [edi+04], edx
:1000C8DF 894708        mov dword ptr [edi+08], eax

* Reference To: KERNEL32.CreateFileA, Ord:0034h
                         |
:1000C8E2 FF150C700110  Call dword ptr [1001700C]
:1000C8E8 8BF0          mov esi, eax
:1000C8EA 83FEFF        cmp esi, FFFFFFFF
:1000C8ED 752C          jne 1000C91B

Да, вот еще один трюк, попытка создать файл на CD, если бы вы это про- пустили, она бы не заработала, потому что на ЖД можно создать файл. И вы- деленное сравнение, есть ни что иное как проверка создался файл или нет, т.е. если в eax (потои перешедшее в esi) возвратилось FFFFFFFF, вроде как файл не смог создаться, то все нормально. Значит здесь надо заметить в файле по адресу C8ED число 75h (jne,jnz) на EBh(jmp), т.е. на безусловный переход.

Посмотрим может еще что-нибудь есть. Да вроде нет , дальше выход из функции обеспечивающей проверку. Если вы хорошо разбираетесь в этом, то можете увидеть, что функция проверки возвращает eax=1, если проверка уда- лась и eax=0, если не удалась. Вывод: можно в самом начале функции напи- сать mov eax,1 , а затем ret. Это попробуйте сами.

Послесловие

Товарищи программисты. Это не защита это отмазка, любой начинающий сломает ее не трудясь за 3 минуты. Хотите получать деньги, делайте лучше.

Все ругательства отправлять в null
Все остальное на lomovskih@yandex.ru

P.S. Запомните все материалы публикуются только в учебных целях и автор за их использование ответственности не несет!!

P.P.S. Возможно имеют место опечатки, заранее извините!

With best wishes Fess

И да пребудет с вами великий дух bad-сектора.





Похожие по теме исходники

Примеры работы с БД

Примеры оформления DBGrid

Пример использования DBGrid




Copyright © 2004-2023 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram