XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DioD

offline
Опыт: 45,134
Активность:
Взлом карт
В этом блоке статей я расскажу о способах взлома “оптимизированных” карт.
Для любого вида взлома вам потребуется:
  1. Любой редактор MPQ архивов.
  2. Любой текстовый редактор.
  3. Карта для взлома.
  4. Хорошо сформулированая цель.
  1. Редактор должен обязательно поддерживать внешние "listfile" так как листфаил удаляется из карт в первую очередь.
  2. Несмотря на то что джаз код полученый после первого действия является текстом, чтение его может быть затруднительным без подсветки синтаксиса, так что для редактирования рекомендуются джаз редакторы.
  3. Взломать можно любую рабочую карту, пока карта работает в игре её можно взломать.
  4. К сожалению получить карту в таком виде как она есть у автора не получиться, поэтому вам следует сформулировать цель и выбрать отдельный механизм или модуль обрабатывая код карты по частям.


Код карты храниться в файле “war3map.j” и его невозможно спрятать, таким образом для взлома доступны любые карты.

Хотя даже тут есть некоторые ограничения:
  1. Карты, использующие РС, собственно если вы не понимаете, как работает РС, то и взломать карту не сможете, это относится и к другим сложным для понимания системам.
  2. Карты оптимизированные нестандартными методами, хотя, таких единицы, но они есть.

Алгоритм взлома различен для каждой карты и для каждого отдельного случая, именно из-за этой особенности статья будет разделена на блоки.

Блок 1: Спеллы

Итак, вы должны знать, что все триггеры имеют событие, действие и условие, исходя из этого мы начнём охоту на "интересности" и "вкусности" защищенных карт:

Любой триггер должен быть инициализирован, собственно вот список того что поможет вам в поисках:
  1. CreateTrigger() Связан с переменной триггера, является связующим звеном между действиями и событиями, все триггеры имеют эту команду в неизменном виде и начинать поиск именно с неё бесполезно.
  2. TriggerAddAction() Добавляет действие в уже созданный триггер, имеет смысл начинать поиск именно с действий, если вы знаете точно механизм действия триггера
  3. TriggerAddCondition() Ключевой момент поиска если вы обладаете рокодом способности чей скрипт хотите получить, но если карта оптимизирована витригизером рокад вы не получите так просто
  4. TriggerRegister* регистрация события при котором срабатывает тот или иной триггер
    Является очень важной составляющей, но начинать поиск с неё бесполезно.

Введение в курс дела окончено, итак, случай номер один.

Карта была оптимизирована ТулойВекса и Витригизером, самый популярный метод защиты и оптимизации карт.

Алгоритм действий:
  1. Из-за того, что данные были перемещены в СЛК таблицы и текстовые файлы нам потребуется получить текстовые данные о способности, которую собираемся доставать
    Запускаем карту, записываем имя способности и часть описания для подстраховки, также числовые данные типа урона.
  2. Для получения рокода способности нам необходимо просмотреть все файлы с именем типа *AbilityStrings.txt в поисках способности с нужным нам именем.
  3. После того как вы найдёте подходящую способность, запишите рокод 4х знаковую строку, находящуюся в заголовке блока с описанием способности, например [A000].
  4. Начинайте поиск рокода внутри скрипта карты, после того как рокод будет найден, вам придётся собрать триггер воедино, для этого и были указаны компоненты кода.
  5. Имена функций не могут повторяться, это очень облегчает задачу. Рокод способности может находиться как внутри действий, так и внутри условия, но вам не придётся искать по всему коду карты, так как условие всегда выглядит одинаково.
    GetSpellAbilityId()=='A000' Ищите именно такую строку, где A000 ваш рокод, и такой поиск приведёт вас к условию триггера.
  6. После того как условие найдено начинайте поиск имени условия, снизу кода, это должно привести ваш поиск к функции типа

    TriggerAddCondition(xx,Condition(function yy))

    где переменной триггера будет хх, а функцией yy
  7. После того как была найдена переменная триггера особого труда найти действие не составляет, для этого вам придётся искать уже имя переменной триггера, опять снизу вверх, для того чтобы поиск был легче прилагается шаблон

    TriggerAddAction(xx,function*

    где после оператора function последует имя действия, таким образом, вы можете найти событие триггера.
  8. Все компоненты кода были найдены, теперь вам осталось поместить их триггер в логической последовательности.
Максимальная работоспособность будет доступна в таком виде:
  1. условие
  2. действие
  3. Инит компонент
  4. Все функции, которые потянутся за действием, должны быть вынесены перед условием


Пособие является не полным, так как должен быть рассмотрен каждый случай, но я над этим работаю, оставляйте свои комментарии и замечания, все пожелания будут учтены незамедлительно.

Отредактировано DioD, 07.10.2006 в 17:01.
Старый 24.07.2006, 19:42
B100D E1F
Scarecrow
offline
Опыт: 4,719
Активность:
Диод маладец!!! Когда до меня дойдет, похачу ДДэй джуджэмент Икстрим!
Старый 24.07.2006, 20:21
DioD

offline
Опыт: 45,134
Активность:
Что где не доходит какие вопросы?
Я пишу статью не для себя, все пожелания в тему не стесняйтесь.
Старый 25.07.2006, 06:40
B100D E1F
Scarecrow
offline
Опыт: 4,719
Активность:
Да вобщем почти все понял. Надо тока капитально было сесть и вникнуть, прочитав 2-3 раза. Зачот.
Старый 25.07.2006, 18:31
remal
нечто
offline
Опыт: 2,087
Активность:
могу потом накатать примерный алгоритм взлома кодов для сохранения героев...
Старый 26.07.2006, 00:32
DioD

offline
Опыт: 45,134
Активность:
Будет пособие начинающим хакерам...
Что-то комментов мало...
Старый 26.07.2006, 00:50
B100D E1F
Scarecrow
offline
Опыт: 4,719
Активность:
Диодыч, не парься! Статья - рулез!
Старый 26.07.2006, 17:30
Nickel
Я за тобой наблюдаю
offline
Опыт: 2,078
Активность:
DioD молотчик. Всё вродебы понятно и ясно, но нужна практика чтобы жжоско втыкнуть.
Старый 30.07.2006, 22:20
Lawliet

offline
Опыт: 6,322
Активность:
Мне нечего сказать, кроме того, что ньюбы не паймут ничего, а не ньюбы итак это знают.
А так зачет.
Старый 30.07.2006, 22:47
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
DioD слышь могешь помочь - кароч у мя есть мапа - протекченая мне надо подправить пару строк кода - ну я посмотрел там убит файл лист - восстановил при помощи програмки Нетрата, залез в файл war3map.j видно что он оптимизирован так как там убиты почти все пробелы ну и т.д. - нашел нужную функцию (пользуясь блокнотом) - подправил, решил проверить в игре - но при попытке запустить в варе случается трабл - вар вылетает с надписью критикал эррор и типа недостаточно места для выполнения операции - может подскажешь че с этим делать?
Старый 31.07.2006, 10:22
DioD

offline
Опыт: 45,134
Активность:
Карту в студию, я не телепат...
Старый 31.07.2006, 11:29
Warden
:::...
offline
Опыт: 26,106
Активность:
Цитата:
Диод маладец!!! Когда до меня дойдет, похачу ДДэй джуджэмент Икстрим!

Спорим не получиться ?
Старый 31.07.2006, 15:04
DioD

offline
Опыт: 45,134
Активность:
У меня полчиться и я дополню статью, карту в студию!
Старый 31.07.2006, 15:42
dk

offline
Опыт: 60,293
Активность:
Хорошая статья! Давай дописывай. Добавь ссылки на используемые программы, чтобы нубам не искать!
Старый 31.07.2006, 17:07
ArchWorm
Матрица незалежности
offline
Опыт: 4,675
Активность:
Статья неполная. Большинство оптимайзенный карт НЕ имеют данных, перемещённых в таблицы SLK. И поэтому надо отталкиваться от другого.
В любой карте есть файлы типа .w3*. И именно в них хранятся данные об объектах. Расскажу поконкретнее:
w3u - юниты
w3a - абилы
w3t - предметы
Чтобы получить данные о них, нужно вытащить соответствующий файл, а затем с помощью опции Редактора Импорт параметров способностей\предметов\войск вставить в какую-нибудь dummy мапу и посмотреть.

Главное - сохраняться чаще
Старый 14.08.2006, 10:05
DioD

offline
Опыт: 45,134
Активность:
Нет коментов нет второй части, у меня нет ризона писать статьи для самого себя.
Для карт с оставшейся инфой внутри стандартных файлов работает тот-же метод тока доставить рокод из стандартных файлов
Старый 14.08.2006, 10:19
ArchWorm
Матрица незалежности
offline
Опыт: 4,675
Активность:
Что ты конкретно хочешь от комментов?
Старый 14.08.2006, 10:39
DioD

offline
Опыт: 45,134
Активность:
Уже ничего.
Старый 14.08.2006, 11:55
DeT

offline
Опыт: 5,715
Активность:
неплохо.3чОтЪ.ты дополняешь еще?
Старый 14.08.2006, 13:10
ComotozNick
Активность: 666
offline
Опыт: 26,206
Активность:
Diod я не успел выложить мапы пойетому скажу названия -
1) Meat 5 Virus v 1.8 AC
2) Defe4enc3 ORPG (вроде так называется)
Старый 14.08.2006, 15:55
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:22.