X-deprotect

» опубликован
» Предназначение: Работа с картами
X-deprotect (далее "xdep") - утилита для восстановления карт для Warcraft3: RoC/TFT, поврежденных специальными утилитами ("оптимизаторами" или "протекторами") таким образом, что в игре они работают, но в редакторе - не открываются.

Следует понимать, что получить из "защищенной" карты в точности ту версию, какой она была исходно, в общем случае невозможно. Но почти всегда можно получить версию, работающую абсолютно неотличимо от оригинала, при этом свободно редактируемую.
Под "восстановлением" здесь и далее подразумевается процесс получения такой карты, которую можно открыть и сохранить в редакторе, при этом функциональность которой останется полностью идентичной исходной карте.
xdep выполняет необходимый минимум операций для такого восстановления, а также, опционально, некоторые дополнительные операции для облегчения понимания устройства карты.
(эти операции, подробно описанные ниже, могут вызывать сбой на некоторых картах, но так как для восстановления карты они не обязательны, их можно отключить в конфигурации)
xdep предназначен не столько для бездумного снятия "защиты" в 1 клик (хотя и такое использование возможно), сколько для автоматизации многих рутинных операций при "ручном" восстановлении карты. На любом шаге в автоматический процесс восстановления можно вмешаться, редактируя файлы во временной папке.
На получившейся восстановленой карте можно применять утилиты типа Deprotect, Dewidgetizer для дальнейшего восстановления, например, GUI-триггеров или объектных данных.
(в силу того, что эти операции довольно сложны, и при этом не являются необходимыми, эта утилита их не выполняет)
Или же просто редактировать скрипт карты через редактор, не выполняя рутинных операций распаковывания/запаковывания файла war3map.j из карты со всеми связанными с этим глюками.

Что конкретно делает xdep в минимальной работающей конфигурации:

  • распаковывает все файлы карты в отдельную временную папку;
  • восстанавливает список файлов в архиве, методом сканирования всех файлов в поисках возможных имен других файлов;
  • исправляет файл war3map.w3i, намеренно повреждаемый утилитами для защиты;
  • удаляет файлы (attributes), (listfile), (signature), переносит скрипт карты в war3map.j;
  • восстанавливает список импортированных файлов (war3map.imp);
  • восстанавливает файлы war3map.wtg, war3map.wct, war3mapUnits.doo на основе скрипта карты;
(сам скрипт карты вносится в один триггер и изменяется таким образом, чтобы карта сохранялась без ошибок в редакторе)
  • собирает получившиеся файлы в новый архив, добавляя ему заголовок от исходного.

В списке дополнительных возможностей:

  • переименовывание функций со "стандартными" именами, назначаемыми редактором, во избежание конфликтов имен при сохранении (эта опция необходима, если при защите карты не использовалось "запутывание" имен функций)
  • подстановка кода однократно используемых функций на место их вызова: нужно для распознавания секции инициализации, для восстановлениия данных о start locations, юнитах, регионах и прочем (обычно это и так выполняется некоторыми утилитами для оптимизации)
  • переименовывание глобальных переменных с "запутанными" (obfuscated) именами в нечто типа "udg_integers01"
  • расстановка отступов в скрипте
  • восстановление данных о start locations в файл war3mapUnits.doo на основе секции инициализации
(если эта опция отключена, war3mapUnits.doo все равно создается, но пустым, т.к. он необходим WE)

Утилита является консольной, все параметры, включая имена входного и выходного файлов, описываются в текстовом файле xdep.ini.
Файл конфигурации снабжен более-менее подробными комментариями по каждой опции.
Для запуска достаточно прописать путь к требуемой карте в конфигурации и запустить xdep.exe.
Для работы с MPQ используется известная библиотека SFmpq.dll с консольным архиватором собственного написания.
Листфайл для архиватора находится в файле listfile.txt, включает в себя списки имен от стандартных архивов War3 TFT, а также от нескольких карт, на которых проводилось тестирование.

Интерфейс

X-Deprotect Interface v0.2 (XDI v0.2) — интерфейс для программы X-deprotect

Благодарность за помощь в тестировании выражается Sky.


Просмотров: 26 462

» Лучшие комментарии


Кет #1 - 6 лет назад 4   
Загружается заново, так как отдельный сайт программы в данный момент недоступен.
Ranger21 #2 - 6 лет назад 9   
Благодаря этой хрени я смог восстановить свою карту, правда пилить её труднее стало, так как приходится расшифровывать код оптимизированный код хД
Это сообщение удалено
Lp666 #4 - 3 года назад 0
Взломал карту, после чего попытался открыть её в редакторе, но она всё равно отказывается открываться, кто нибудь сталкивался с подобной проблемой?
Это сообщение удалено
raritan #6 - 2 года назад 0
есть кто может помочь? не получается открыть в редакторе(
МрачныйВорон #7 - 2 года назад -2   
raritan, ссылка
Никто ломать вам за даром не будет
Дик #8 - 2 года назад 0
Восстановил свой старинный проект, который на других программах не мог восстановить.
Снова конечно я им заниматься не стану. Так как есть задумка получше.
Но забытые идеи, явно пригодятся.
Так что спасибо Большое!
Artyom18 #9 - 4 месяца назад 0
Не способна восстановить карту для открытия в редакторе
PT153 #10 - 4 месяца назад 0
Artyom18, зависит от карты.
Crazyhelix #11 - 2 месяца назад 0
Очень хотелось поправить баланс юнитов в такой известной карте Legion TD Mega 4.5.1 x20 (или 4.5, не суть), открыл в эдиторе, нашел в реадкторе объектов и абилки и самих юнитов и в целом держал в руках все, что было нужно для моих задач. Но даже просто пересохранить карту в рабочем состоянии не представляется возможным, очевидно, что она защищена. Попробовал этой утилитой снять защиту - процесс происходит, но результат не открывается даже эдитором. Может есть у кого вскрытая легионка?)
quq_CCCP #12 - 2 месяца назад 1   
Crazyhelix, не стоит ниче вам править, если карта открывается в редакторе - и есть весь код, то никакой защиты там нет, просто руки не из того места.
Если карта защищена - черт с ней, ничего не мешает править объектные данные ручками, не ломая карту, как сделали модификации дотки фрога.
Так что карту в студию, и еще раз хорошо подумайте о том стот ли лезть с балансом в чужую карту.
Crazyhelix #13 - 2 месяца назад 0
quq_CCCP, рад, что ответ начинается с оскорбительных намеков) это сразу настраивает на конструктивную беседу!
Хорошо, защиты нет, ну допустим. Тогда почему я банально не могу пересохранить карту? Не делая вообще ничего? Соответственно, если я все же и пытаюсь внести правки-тот же результат.
На то, чтоб править данные объектов ручками не инструментами WE действительно не хватает опыта. Я редактор то открыл недавно впервые в жизни, о тонкостях JASS или прочих MPQ и говорить не стОит. Буду рад, если поделитесь ссылкой на материалы, где освещены данные навыки.
Карту прикрепляю, не вопрос.
Подумал-стОит. Баланс явно начали делать и не доделали, это совершенно очевидно.
Прикрепленные файлы
quq_CCCP #14 - 2 месяца назад 2   
Crazyhelix, Еще раз, не стоит пытатся делать баланс 'под себя", потом в сети полно древних версий, открытых легион тд.
Эта карта защищина, софтом вроде ранних тулов векса, оптимизированы апгрейды (переведены в формат слк), и удален файл Wa3units.doo, сведения о стоящих на карте юнитах, поэтому карту уже не сохранить, код оптимизирован, удалены имена, но war3.wtg на месте, вероятно там не кооректные сведеья о текстовых триггерах. Карту можно легко восстановить, скопировать war3map.j, открыть карту в редакторе, удалить все триггеры и прочее, отредактировать войска, после сохранить карту, открыть в мпк редакторе и вставить сохраненный war3map.j
Почему я не советую этим заниматся? Потому что еще ни 1 нуб это не осилил, и что то хорошего не сделал, те кто хотели, они учились на своих картах, на статьях а потом шли и делали, не задавая подобных вопросов. Тот кто не понимает устройство карты - и менять то в ней ниче тольком не сможет.
Баланс вещь тонкая, и делается на основе наблюдений за множетсвом игр, и репортов от игроков, ваше хочу - не есть лучшее решение
Crazyhelix #15 - 2 месяца назад 2   
quq_CCCP, а я вам еще раз говорю: я не спрашивал, стОит или нет. Странный человек, я пришел, говорю: а где тут хлеб продают? А вы такой весь в белом: дурик, зачем тебе хлеб вообще? помидоры бери!
Есть опенсорс версия, где нет целой кучи функционала, чтобы сделать которые уже нужно разбираться куда лучше. Меня интересует х20 версия. И все, что мне было бы нужно для моих весь простых манипуляций есть в редакторе объектов. Я бы потратил пару часов и сделал некоторые очевидные действия, которые создатель карты доделать не успел/ не захотел.
За описания действий спасибо.
Почему я советую, не советовать те советы, которых не спрашивали? Потому что вопрос был вообще другим. Если я не шарю в JASS, тонкостях форматов, используемых игрой, скриптовых языках, что авторы используют внутри карты и прочем, это никак не мешает мне видеть совершенно очевидные косяки в явных значениях. Но вы уже решили, что множества игр у меня нет. Моего "хочу" также не видели, но также решили, что оно "плохое". Мое понимание баланса тоже уже как супермен рентгеном просветили. Так держать, че уж..
quq_CCCP #16 - 2 месяца назад 0
Crazyhelix, Опенсорсы были разные, ибо у лтд была куча авторов и в конце пути некоторые выкладивали сурсы, кто то передавал сурсы последователям. Провалов в области лтд - 100500, реально играют версии 3. В свое время доту ломануть просили в каждой второй теме, где они сейчас? Ну и как насчет сделать свою интересную карту а не эксплуатировать устаревшую лтд?

Я даже депротектил когда-то карты для просящих, но новых интересных проектов увы это не дало, все кончалось тупиком.
Crazyhelix #17 - 2 месяца назад 0
quq_CCCP, очень даже верю. Люди вообще очень плохо умеют в баланс. Даже гейм дизайнеры, которые им и занимаются и то умудряются лажать как не в себя. Но есть видение очевидных косяков. Речь не идет о сверхтонких материях баланса, поправить явные грубые вещи - и играть станет интереснее. Пытался искать незапротекченную версию, попалась лишь 3.41 нормал. Ни х10 ни х20 не нашел. Наверняка для тех, кто давно крутится в деле модинга и картоделия подобного перед глазами прошло много и вероятнее всего, что подавляющее большинство оказалось не лучшего качества и складывается ощущение, что и это было и так пробовали. Я вот не занимался, попробовал найти - не нашел(( не один день кстати искал, пытался найти контакты тех, кто делал карту - тоже не нашел. Карта старая, наверняка где-нибудь в 10 году, когда ее активно делал нашел бы без проблем. Но еще раз спасибо за инструкцию.
NekoriDes #18 - 2 месяца назад 0
Как вариант, вместо поиска решения этой проблемы, которая может занять даже больше времени, сделай из обычной версии х20. Это на бумаге и не сложно. Там же просто юнитов в 20 раз больше появляется?

Обращение по нику - ctrl+клик
Crazyhelix #19 - 2 месяца назад 0
NekoriDes, не совсем так, еще другое коk-во стартового голда, другое хп и уроны мобов (эт мелочи в общем-то), но там вся малина в режиме профет рандом) плюс скалирование умений кинга. И как говорится "здесь наши полномочия все" :D
Достал мпку редактором war3map.j, открыл в WE карту, убрал единственный скрипт, сохранил, подложил war3map.j обратно - карта то работает даже без скрипта вовсе, но явно ощущаются подлагивания с самого начала, хотя мобы идут, юниты строятся, грейды делаются, кинг отбивается, в общем ничего не рабочего сходу не нашел (правда только в режиме тестирования запускал). Открывал карту в WE после всего, но подложенный war3map.j не вернул скрипт) там так и было пусто. Пробовал создать скрипт, скопировав текст-но хрен то там ночевал :D сохранить карту после этого уже не удается. В общем тыкаюсь аки котенок - полет нормальный))
NekoriDes #20 - 2 месяца назад 0
Crazyhelix:
NekoriDes, не совсем так, еще другое коk-во стартового голда, другое хп и уроны мобов (эт мелочи в общем-то), но там вся малина в режиме профет рандом) плюс скалирование умений кинга. И как говорится "здесь наши полномочия все" :D
Достал мпку редактором war3map.j, открыл в WE карту, убрал единственный скрипт, сохранил, подложил war3map.j обратно - карта то работает даже без скрипта вовсе, но явно ощущаются подлагивания с самого начала, хотя мобы идут, юниты строятся, грейды делаются, кинг отбивается, в общем ничего не рабочего сходу не нашел (правда только в режиме тестирования запускал). Открывал карту в WE после всего, но подложенный war3map.j не вернул скрипт) там так и было пусто. Пробовал создать скрипт, скопировав текст-но хрен то там ночевал :D сохранить карту после этого уже не удается. В общем тыкаюсь аки котенок - полет нормальный))
Это нормально что скрипта нет, когда открываешь мапу. Лагает когда волна первый раз выходит? Если так, то попробуй найти пустое место на карте и кинуть туда все возможные типы появляющихся юнитов, что они прогрузились.

Алсо, не совсем тот раздел для решения проблем, на сайте есть Q/A по варкрафту xgm.guru/p/wc3/qa
quq_CCCP #21 - 2 месяца назад 0
Crazyhelix, мда, чувак почитай статьи, ты не понимаешь что делаешь..
  1. war3map.j Это и есть скрипт карты, в таком виде какой он нужен игре.
  2. В редакторе ты видишь не скрипт из war3map.j а триггеры из war3map.wtg и еще кучи файлов.
  3. При каждом сохранении карты в редакторе, редактор генерирует новый war3map,j из файлов редактора, а у тебя там пусто.
Нужно перенести весь скрипт по частям из wa3map.j в редактор, разбить на части и переименовать, ибо оригинальный скрипт обработан протектором, имен не осталось, все комментарии удалены и ниче не понятно. Необходимо отрезать функции main и config ибо они генерируются редактором при сохранении, а ты копируешь скрипт из war3map.j, где они есть и прочие функции которые генерирует редактор. Так же делают и депротекторы, они тупо копируют скрипт, а имена для избежания конфликта придется менять тебе руками.
Были нормально открытые лтд, посмотри как там сделано на пили свою карту с нуля, с номальным кодом и подходом к спауну мобов, чтобы не лагало.
Crazyhelix #22 - 2 месяца назад 0
quq_CCCP, в своем ответе я допустил ошибку, хотел написать триггер, а написал скрипт)) а так, как это устроено я уже понял. Но общее понимание никак не влияет на JASS ))))