Wake of Gods Forum | Форум Во Имя Богов

Full Version: Реверс игры для новичков
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4 5
(03.09.2022 06:26)wessonsm Wrote: [ -> ]Расширение и перенос структуры в памяти как делается?

Зависит от того, где хранится структура и как к ней обращается код игры. Самый простой способ переноса - для динамических стуктур в динамической памяти, размер которых заранее не определён (там можно обойтись бинарным патчем, т.к. всё делает сам движок игры при создании структуры в памяти, т.е. патчится только конструктор и дезруктор). Посложнее - статические структуры в статической/динамической памяти - там придётся выделить память и перенести всю адресацию: в зависимости от сложности это может быть всего 1 адрес (когда игра всегда получает доступ с помощью базовой адресации, что очень удобно для переноса структуры) или например 2000. Ну и самое сложное в Третьих Героях - структуры, которые игра хранит в стеке: для переноса этих структур потребуется расширение выделяемой стековой памяти или перенос в динамическую память с заменой всех участков кода. В общем, рекомендую начинать с самого простого (в исходниках плагинов на новые артефакты или новых монстров), а потом уже переходит к более сложному.

(03.09.2022 06:26)wessonsm Wrote: [ -> ]Я так понимаю, нужно пропатчить все места в коде игры, где идет обращение к полям этой структуры?

Да, абсолютно все.

(03.09.2022 06:26)wessonsm Wrote: [ -> ]А как тогда убедиться, что нашли действительно ВСЕ такие места?

Методом научного тыка. Переносим и смотрим, работает ли вообще игра, если что-то начинает работать не так или вообще не работает - значит перенесено не всё. Когда появится опыт, то количество ошибок будет меньше.

(03.09.2022 06:26)wessonsm Wrote: [ -> ]Ведь значительная часть кода не разобрана даже.

Для переноса структур исполнительный код разбирать практически не потребуется. Самое главное, чтобы была разобрана сама структура.

(03.09.2022 11:45)daemon_n Wrote: [ -> ]сколько ни видел обращений к структурам, они все по ссылке идут.

Далеко не все. Оригинальных базовых адресов с десяток вряд ли наберётся. А вот если одна структура является частью тонны других структур, то её вообще очень затратно переносить (например структуру слотов армии вряд ли кто-то захочет переносить - ради добавления 8-го слота придётся переделать чуть ли не половину игрового кода, что может сделать только конченный психопат-задрот).

(03.09.2022 11:45)daemon_n Wrote: [ -> ]Так понимаю, уведомить Эру надо, потому что она раньше всех плагинов на адреса цепляется?

До сих пор не понимаю, зачем это было сделано в Эре. Та же HoA совмещается с HD-модом по части перенесённых структур с помощью базовых адресов, что было унаследовано и в версии HD-мода для Эры, за счёт чего HD-мод видит новых монстров, новые артефакты и даже новые города.
SecSkillNames: PSecSkillNames = Ptr($698BC4);
SecSkillDescs: PSecSkillDescs = Ptr($698C34);
SecSkillTexts: PSecSkillTexts = Ptr($698D88);
Spells: PSpells = Ptr($7BD2C0);
MonInfos: PMonInfos = Ptr($7D0C90);
ArtInfos: PArtInfos = Ptr($660B68);

Это список прямых адресов. Можешь написать надёжные, по твоему мнению, адреса указателей на данные статичные адреса.
Berserker, получается, надо переписывать вог 96-copy
Там такая муть, честно говоря. Что эти командиры, что опыт армии, что этот Erm...
Вынести бы это всё в отдельный плагин, а сама ERA основывалась бы на SoD
(03.09.2022 19:24)Berserker Wrote: [ -> ]SecSkillNames: PSecSkillNames = Ptr($698BC4);

mov dword [4E6C00h], Таблица_имён_навыков
mov byte [4E6C4Bh], Количество_навыков

(03.09.2022 19:24)Berserker Wrote: [ -> ]SecSkillDescs: PSecSkillDescs = Ptr($698C34);

mov dword [4E6C10h], Таблица_описаний_навыков

(03.09.2022 19:24)Berserker Wrote: [ -> ]SecSkillTexts: PSecSkillTexts = Ptr($698D88);

mov dword [4E6C1Ah], Таблица_текстов_навыков

(03.09.2022 19:24)Berserker Wrote: [ -> ]Spells: PSpells = Ptr($7BD2C0);

4. Структура заклинаний:

* Базовый адрес = [687FA8h]
* Количество заклинаний = байт [402902h] (c чит-кода на все заклинания, лимит 128, всё равно больше никто никогда не сделает)

(03.09.2022 19:24)Berserker Wrote: [ -> ]MonInfos: PMonInfos = Ptr($7D0C90);

1. Структура монстров:

* Базовый адрес = [6747B0h]
* Количество монстров в игре = [5C8047h]

(03.09.2022 19:24)Berserker Wrote: [ -> ]ArtInfos: PArtInfos = Ptr($660B68);

3. Структура артефактов:

* Базовый адрес = [660B68h]
* Количество артефактов = [44CCA8h]/4-2 (из загрузчика artraits.txt, так как количество артефактов игра никуда не пишет и нигде не проверяет)

(03.09.2022 19:24)Berserker Wrote: [ -> ]Это список прямых адресов. Можешь написать надёжные, по твоему мнению, адреса указателей на данные статичные адреса.

Вполне подходят из загрузчиков текстовиков, т.к. их код вряд ли кто-то станет менят.

(03.09.2022 23:20)daemon_n Wrote: [ -> ]
Berserker, получается, надо переписывать вог 96-copy
Там такая муть, честно говоря. Что эти командиры, что опыт армии, что этот Erm...
Вынести бы это всё в отдельный плагин, а сама ERA основывалась бы на SoD

В ERA+ в процессе. Но чистого СоДа не будет никогда, т.к. жизненно необходимый минимум воговского кода всё равно останется. Да, практически весь игровой воговский код, содержащий наибольшее количество косяков и костылей, скоро будет поглощён Тифоном, но непосредственно сам воговский движок, дополняющий содовский, останется на месте, т.к. он реализован вполне приемлимо (правда, он работает медленно по сравнению с СоДовским, но на современных ПК это особо не заметно, т.к. я постепенно убираю самую корявую и медлительную часть ВоГа - игровой воговский код, который на чистом ассемблере работает в несколько раз быстрее, что позитивно сказывается на скорости игры на моём старом ПК).
XEPOMAHT, спасибо, применю в следующей обновлении.
https://dropmefiles.com/O5OPm

DLL с адресами от Хероманта. Проверил базовый запуск игры и вступление в бой.
(04.09.2022 08:07)Berserker Wrote: [ -> ]https://dropmefiles.com/O5OPm

DLL с адресами от Хероманта. Проверил базовый запуск игры и вступление в бой.

Не получается скачать.
Куда загружать временно подскажи )
Berserker, куда угодно, хоть и на ЯД)
Всегда с dropmefiles нормально скачивалось, а сейчас при нажатии на кнопку "скачать" на полсекунды вываливается окошко "для разархивирования используйте пароль 123" и мгновенно исчезает, загрузка не начинается.
Попробовать другим браузером, что ли.

Отбой, ложная тревога ))
Оперой скачалось. Что-то не так с моим Firefox - я не могу скачать даже файл, который сам загрузил для проверки.
wessonsm, вот ты и нашёлся, робот Spiteful
Да, ботяра, долго мы тебя ловили 85

https://tmpfiles.org/34561/eraupdate.exe
Спасибо ))
Pages: 1 2 3 4 5
Reference URL's