На чем основано решение выбрать мертвый язык для реализации?
Я начинал с JASS'а, после чего перешел на Delphi. Там мне что-то не понравилось и я пересел на Lazarus/FreePascal. Потом я знакомился с Java, Python, Lua, но ни один из них не годился для хаков.
Еще есть Rust, но писать хаки на этом языке, сосредоточеном на безопасности, будет тем еще развлечением.
Лишь недавно я начал изучать C++, благодаря которому появился выбор и на котором теперь я буду предпочитать делать все новые моды.
Вот только этот проект уже написан на FreePascal и переписывать его на другой язык пока лень, хотя я уже успел настрадаться от него. Мог бы даже написать небольшую статью о том, почему не стоит на нём работать и о всех тех минах, что там расставлены.
ScorpioT1000, игра не использует STL, вместо этого у неё свои велосипеды. Массив в JASS использует шаблонный класс TSGrowableArray, который при росте выделяет про запас до 63-х элементов, как я уже писал ранее.
RatzCard, я сделал небольшой мод (исходники прилагаются), который создает в папке с игрой файл "cd_key_dumper.log" с информацией о лицензии. Первый ключ для ROC'а, а второй для дополнения TFT. Перемести ".mix" файл в папку с игрой версии 1.26a и запусти её, после чего проверяй результат.
Я незнаю что за алгоритм там внутри используется, но я видел внутри константы SHA-1. Вот только это ведь алгоритм хэширования, а не шифрования?
Наверное, чем писать программу для расшифровки, будет проще сделать мод, который подождет, пока игра сама не прочитает ключи, после чего запишет подсмотреные значения на диск.
Помнится, мне тоже понадобилось пройтись по символам в строке для того, чтобы проверить её на присутствие запрещенных символов или превышение длины, при этом допуская использование русских букв. В итоге я нашел эту библиотеку.
При размере карты начиная примерно с 41 МиБ игру начинает глючить. На хостботах такого не наблюдается, так как там, видимо, нормально написан код для расчета процентов прогресса скачивания карты.
Цвета имен игроков получаются путем извлечения первого пикселя текстуры командного цвета.
Чтобы получить путь к текстуре, нужно приклеить к пути из "TeamColor" номер игрока с нулем в начале и расширение ".tga" или ".blp", если первый вариант не нашелся.
Насколько я помню, в моей карте примере для сценария на любом языке для взрыва использовались те же эффекты, что применили близарды для своего взрыва нейтралов (подсмотрел в game.dll). Единственное отличие — невозможность изменения масштаба спецффекта из-за отсутствия соответствующих нативок. Можешь оттуда скопировать.
Менеджер памяти варкрафта размещает перед каждой выделеной единицей памяти служебные данные. Непосредственно перед строкой находятся 16 байт, содержащие старшие два байта адреса текущего региона памяти, за которыми следует константа 0x6F6D ("mo"), которая, вероятно, является маркером, нужным для проверок блока на правильность во время освобождения.
Нативка SubString позволяет читать память перед строкой с минимальным рабочим индексом равным -32768. Если дотянуться до незанятой памяти, то должно быть возможно и крашнуть игру.
Проверка, что символ перед строкой не равен букве "o" всегда будет возвращать false, если только кто-нибудь не сделает мод, который заменит стандартный менеджер памяти на альтернативный, что может привести к изменению содержимого служебной памяти перед строкой.
В игре версии 1.26a, по адресу game.dll+0x4CC4C0 находится функция, которая, как мне кажется, вычисляет ширину текста.
В данном случае краш произошел из-за того, что указатель на объект со шрифтом оказался равен nullptr'у.
KaneThaumaturge, они там использовали обфускатор на своем коде, а я прежде не занимался расшифровкой программ, разработчики которых используют защиту от анализа кода.
Да и если близарды не хотят, чтобы пользователи делали моды для их новой игры, то пускай сами всё делают.
В карте "Vampirism NewGen" тоже были здания, периодически дающие золото — золотые шахты.
Там у них была включенная по умолчанию автоприменяемая способносность, использование которой давало игроку золото. Она была настроена таким образом, что шахта сама прожимала её.
Таким образом, золото будет приходить не в фиксированые интервалы времени, а у каждой шахты будет свой личный таймер. Не будет такого, что немного опоздал с постройкой и потерял деньги или напротив, построил кучу зданий прямо перед зарплатой и получил много золота.
hacaigivay, я скачал архив с сайта, распаковал в папку с игрой и у меня всё работает.
Ты уверен, что установил правильную версию? Попробуй удалить все старые хоткеи и скачать заново.
Если проблема продолжится, то скинь мне краш лог из папки Errors (дата в имени файла должна соответствовать времени краша).
hacaigivay, спасибо, что сообщил об ошибке.
Сам я во время тестов использую инжектор для внедрения мода в память игры, а протестировать загрузку игрой mix файлов я забыл.
Перезалил исправленую версию.
» WarCraft 3 / Открытая виртуальная машина
Еще есть Rust, но писать хаки на этом языке, сосредоточеном на безопасности, будет тем еще развлечением.
Лишь недавно я начал изучать C++, благодаря которому появился выбор и на котором теперь я буду предпочитать делать все новые моды.
Ред. IceFog
» WarCraft 3 / Открытая виртуальная машина
» WarCraft 3 / Открытая виртуальная машина
Ред. IceFog
» WarCraft 3 / Можно ли узнать свой ключ RoC/TFT
Ред. IceFog
» WarCraft 3 / Можно ли узнать свой ключ RoC/TFT
Ред. IceFog
» WarCraft 3 / Можно ли узнать свой ключ RoC/TFT
Ред. IceFog
» WarCraft 3 / как заранее автоматически узнать кодировку каждого символа в строке?
» WarCraft 3 / Карта не может запуститься в локальной игре
Ред. IceFog
» WarCraft 3 / ЦВЕТ - как из игры получить точные значения playercolor в RGB кодировке ?
Чтобы получить путь к текстуре, нужно приклеить к пути из "TeamColor" номер игрока с нулем в начале и расширение ".tga" или ".blp", если первый вариант не нашелся.
Ред. IceFog
» WarCraft 3 / Неограниченый размер карт без багов
Ред. IceFog
» WarCraft 3 / Наработка: Онлайн фича с животными
» WarCraft 3 / зачем в Substring start -1 (minus) ?
» WarCraft 3 / Автопереводчик карт
Ред. IceFog
» WarCraft 3 / Ошибка
В данном случае краш произошел из-за того, что указатель на объект со шрифтом оказался равен nullptr'у.
» WarCraft 3 / Супер хоткей
Да и если близарды не хотят, чтобы пользователи делали моды для их новой игры, то пускай сами всё делают.
» WarCraft 3 / черный экран
» WarCraft 3 / Супер хоткей
» WarCraft 3 / Супер хоткей
» WarCraft 3 / Игра воспринимает строящееся здание как полноценное
Там у них была включенная по умолчанию автоприменяемая способносность, использование которой давало игроку золото. Она была настроена таким образом, что шахта сама прожимала её.
» WarCraft 3 / Не поддерживается русский текст
» WarCraft 3 / Супер хоткей
Ты уверен, что установил правильную версию? Попробуй удалить все старые хоткеи и скачать заново.
Если проблема продолжится, то скинь мне краш лог из папки Errors (дата в имени файла должна соответствовать времени краша).
» WarCraft 3 / Супер хоткей
» WarCraft 3 / Супер хоткей
Сам я во время тестов использую инжектор для внедрения мода в память игры, а протестировать загрузку игрой mix файлов я забыл.
Перезалил исправленую версию.
» WarCraft 3 / Монитор памяти агентов
Ред. IceFog
» WarRaft / Переменные