d07RiV
offline
Опыт:
219Активность: |
rdep - наработка депротектора
Я в процессе написания своего депротектора; у меня было ощущение что xdep не работает во многих случаях (насколько я помню, доту у меня им открыть не получилось, хотя это было давно и вполне возможно, что я что-то делал не так).
Функциональность примерно следующая:
Jass записывается в удобочитаемом виде (см. RMPQEx->Jass deobfuscate), для удобства по умолчанию будут использоваться возможность vJass (globals..endglobals блоки в отдельных триггерах, порядок включения), возможно сделаю вывод в виде Zinc.
Все библиотеки самописные, включая читалку/писалку MPQ.
Если кто заинтересован, пишите.
Ещё, есть пара вещей с которыми я не успел разобраться, если кто знает, буду благодарен за информацию.
Отредактировано d07RiV, 24.01.2010 в 01:34. |
24.01.2010, 01:23 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
могу в помощь исходник xdep скинуть, вдруг пригодится.
это как раз логично, т.к. ломает работу депротекторов, про это не знающих =) правда, нестандартных функций config я на момент написания xdep не встречал, но нестандартные main он обрабатывать умеет, именно переносом их содержимого в обычную инициализацию. |
24.01.2010, 01:28 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Kemodonn
offline
Опыт:
1,665Активность: |
d07RiV, будет очень хорошо если сделаешь, а то старый автор к сожалению забросил :( |
24.01.2010, 01:31 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
d07RiV
offline
Опыт:
219Активность: |
То есть утверждается, что строки call SetPlayerAlliance(Player(15),Player(#),ConvertAllianceType(6),true) вставлены в config вручную? И при снятии защиты их надо просто поместить в начало инициализации?
На всякий случай уточню, в редакторе нет опций, позволяющих расшарить контроль нейтрального игрока остальным, не используя триггеров? (Что-то похожее есть в настройках Scenario->Force properties) Отредактировано d07RiV, 24.01.2010 в 03:00. |
24.01.2010, 01:37 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
могу ответить на все интересующие вопросы как на форме так и в персональном порядке.
на форуме офк будет веселее. код доты пишется командой ! inject config
подробное описание есть в справке к vJass кроме того можно переписать main командой ! inject main которая заменяет конфиг (main) на тот что желает автор, данная штука сделана для того чтобы сообщение о расшаривании контроля нейтралом не было показано в игре.
если переместить куда либо в другое место осображение будет иметь место, мелочь конечно но лучше не ломать. редактор создаёт переменные только для юнитов чьё упоминание есть в GUI, в последствии при считывании\записи war3map.j эти переменные трогаться не будут, если о них есть упоминание в wtg\wts если упоминания нет то они вписаны не будут.
для сохранения переменных надо просто создать триггер плана set gg_unit_xxxx_#### = gg_unit_xxxx_####
DioD добавил: учитывая возможности vjass редактора дота тепротектиться полностью вручную вставлением одного огромного триггера и это будет компилироваться без ошибок, правда долго. |
24.01.2010, 07:49 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FunkieFoO
offline
Опыт:
7,159Активность: |
А когда ждать работоспособную версию? и какое будет исполнение, консоль или же в графическом интерфейсе? |
24.01.2010, 08:56 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
d07RiV
offline
Опыт:
219Активность: |
DioD: спс за информацию,
Тогда я просто добавлю лишний код из конфига с помощью тех же //! inject config (тем самым программа будет требовать вджасс, могу добавить опцию чтобы это отключить). По поводу переменных, значит редактор всё-таки не пересоздаёт war3map.j с нуля при каждом сохранении, а создаёт новый код на базе старого? А что же он делает если ему подсунуть war3map.j из исходной карты (то есть обфусцированный)? Я бы предпочёл не создавать гуи-триггеров специально для этого, если так возможно. Но получается что для этого надо будет пересоздать war3map.j в вот виде, в котором его пишет редактор? А одного большого триггера я хотел бы избежать так как это довольно неудобно редактировать. Да и ещё, насколько я понимаю данные об исходных локациях, указанные в war3mapUnits.doo (в виде объектов sloc) имеют приоритет над теми, которые указаны в war3map.w3i? Ибо данные в w3i доты не совпадают с локациями, заданными в функции config. И ещё вопрос тогда, где можно прочитать подробное описание того, что оптимизатор (vex?) делает с BJ функциями? В доте несколько функций продублированы почти без изменений (первые несколько функций в скрипте - PolledWait, PolarProjectionBJ, GetPlayerEnemies, UpdateEachStockBuilding, PerformStockUpdates, StartStockUpdates). Единственное отличие, которое я нашёл - замена null булэкспра на другой, всегда возвращяющий true. Это связано с очередным мак-багом? И можно ли это всю эту развёртку InitBlizzard безопасно убрать, понадеявшись что на этапе обратной оптимизации этот фикс внесётся опять? FunkieFoO: по поводу сроков точно сказать не могу, я бы хотел по крайней мере доделать обработку джасса (сейчас пишу исполняющую часть) и восстановление звуков/регионов/камер/юнитов. Вообще говоря, работоспособную версию могу выложить и сейчас (убрав лишний код), если тупо создать огромный триггер со всем кодом карты и ничего из него не извлекать. Но тогда мне придётся писать программу в нелогичном порядке (сначала интерфейс потом начинку???). Я думаю что сделаю гуи программку со всякими чекбоксами для настроек, благо для этого просто требуется добавить один диалог что есть дело 15 минут. А может сделаю консольную програмку с ini файлом подобно xdep плюс гуишную программу с чекбоксами, которая этот ini файл пишет и запускает сам депротектор. |
24.01.2010, 14:12 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
XOR
offline
Опыт:
38,284Активность: |
|
24.01.2010, 14:19 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
vJass даёт ровно те возможности которые необходимы для эффективной разработки, ни больше ни меньше, отказ от его использования совсем не айс, как в принципе и переход на cJass и ZINC которые полностью скрывают реальный код еще круче чем GUI.
Редактор пересоздаёт war3map.j каждый раз при сохранении, это можно увидеть если внести случайные изменения прямо в код и сохраниться, от внесённых изменений не будет ни следа.
(этим пользуются некоторые карты где GUI код не соответствует внутреннему коду, при пересохранении карта портиться) Редактор с кодом как бы не работает, он обрабатывает wtg и wct файлы, которые и хранят всю информацию о триггерах и переменных, что не указано в этих файлах в код не попадёт.
функция config как бы не решает особо ничего, данные которые содержаться в w3i идут в большем приоритете и работать надо с ними, конфиг вообще можно задействовать под иные нужды по большему счёту.
эта ересь в оптимизаторе отключается, можно и нужно в последствии при оптимизации выключить это, так как проблема исправлена 100500 версий назад, связана с утечкой памяти, но очень и очень минорной, да кстати этот код добавляется во все карты которые подверглись оптимизации, даже если эти функции нигде не используются. |
24.01.2010, 14:53 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
d07RiV
offline
Опыт:
219Активность: |
На самом деле это не так важно, чтобы вывести код в виде cJass или ZINC надо всего лишь поменять функцию вывода, так как структура кода та же самая (естественно, если не использовать фичи типа безымянных функций).
У меня возникает ощущение что редактор читает глобальные переменные в war3map.j и находит среди них те, которые имеют вид gg_unit_xxxx_####. У меня получается что-то вроде следующего: 1. Редактор читает список глобальных переменных war3map.j, похожих на названия юнитов, и добавляет их в список, если они упоминаются в war3map.wct/wtg 2. Если через ГУИ-редактор выбирается юнит, он добавляется в список 3. При сохранении список пишется в глобальные переменные 4. Независимо от этого списка, при генерации функции CreateUnitsForPlayerX редактор ищет упоминание gg_unit_<id>_<#> в wct/wtg, если найдено то пишет set gg_unit_<id>_<#> = CreateUnit (...), иначе set u = CreateUnit (...). Например если ничего в ГУИ редакторе не выбирать, просто поставить ферму и написать триггер call KillUnit (gg_unit_hhou_0001) то ругатся редактор будет не на эту строчку, а на строчку в своей же инициализации (правда, возможно, это ошибка jasshelper). Я потестирую ещё немного и посмотрю что получится. А вообще странно, почему бы не научить jasshelper тупо создавать недостающие переменные gg_unit_xxxx_####... |
24.01.2010, 18:54 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
на самом деле проблема автоматического создания переменных не является проблемой, если переменной нет - создать переменную нужного типа даже дополнительных проверок не надо, так как уже известно что имя переменной свободно, осталось решить тип переменной, который опять таки решается просто, если значение из переменной извлекается, то глобальная, если устанавливается то локальная, так как извлекать значение из переменной которой нет нет смысла, это будет вполне правильно.
все эти свистелкоперделки накручиваются но из за выхода ск2 в ближайшее время всем по барабану. |
24.01.2010, 19:27 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
Я так понимаю прога готовится на взламывание хорошо защищённых карт и в этом случае это дота, только какой смысл? Дота весит принципиально много и при обнаружении разницы ни 1 игрок не станет качать, даже раскрутка доты 6х6 далась очень трудно и вряд ли достигает хоть одного процента всей дота аудитории.
Собственно вопрос автору - зачем ломать доту, если любые изменения сразу пропалятся, да и раскручивать дота мод дело очень долгое и бессмысленное?
+1000 |
24.01.2010, 19:53 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JEKA1234
offline
Опыт:
2,375Активность: |
Зачем доту ломать, вам даёт что-то это????? Ну импорт ладно ну спелы и прочие системы не сделаете сами???(кто умеет) Отредактировано JEKA1234, 24.01.2010 в 22:10. |
24.01.2010, 20:23 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
d07RiV
offline
Опыт:
219Активность: |
Вообще-то я хотел попробовать написать свой AI; я понимаю что это делается не так и AI скрипты в конечном счёте вставляются в карту программно, но было бы удобней писать скрипт в редакторе. А может это мне кажется...
И потом, делали же люди ОпенДоту и ничего... Конечно правда, что ск2 может это всё очень быстро накрыть... ну тогда я просто возобновлю вов аккаунт и мне на всё снова по барабану будет. И вообще для меня эта программа имеет чисто теоретический интерес, так как пользоваться я ей буду вряд ли (очевидно произведение указанных преобразований вручную один раз гораздо проще). Да и по поводу 6х6: сравни с OMG дотой, она появилась значительно позже 6х6, и гораздо более популярна. Аналогично AI карты. |
25.01.2010, 00:00 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
d07RiV, можно сделать в ск2 любое по желанию с гораздо меньшим временем и большим толком.
d07RiV = d07RiV который делает vampirism fire 5.07+? |
25.01.2010, 00:02 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
d07RiV
offline
Опыт:
219Активность: |
Да, я делаю vampirism fire и dota replay manager
Но на ск2 я переходить наверное не буду, я и не особо увлекался ск1, хз. |
25.01.2010, 01:00 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
d07RiV, 90% скиллов доты будет делаться в РО без поддержки кода вообще (+полная функциональность нового гуи(естественно который будет значительно удобнее) и многие-многие другие плюшки), думаю из-за мощности этого редактора уже не важно играл ли в ск1. |
25.01.2010, 09:11 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
YellowStar
poon
offline
Опыт:
15,144Активность: |
Изза крутого редактора ск - количество поклоников не вырастет. Весь понт редактора был бы в том чтобы он депротектил объекты. тупо разместил на карте. большего не надо 0.о |
27.01.2010, 11:44 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Скайнет
Kicked by ZlaYa1000
offline
Опыт:
8,234Активность: |
narayan, популярность вк3 давно держится только на существовании мощного редактора; абсолютно тоже самое будет в ск2, независимо от изначальных игроков ск1, да и тем более атмосфера вк3 может быть восстановлена и на движке ск2 с затратами на импорт. |
27.01.2010, 12:11 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
близы однозначно дадут плюшек достаточно чтобы даже с импортом париться не надо было особо, например совместимость с моделями вара запросто делается. |
27.01.2010, 12:13 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|