mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2025-08-23 17:40:26 +03:00
52 lines
2.9 KiB
Markdown
52 lines
2.9 KiB
Markdown
# Reverse Engineering игры Parkan Железная стратегия 1998
|
||
|
||
<div align="center">
|
||
<img width="300" height="300" src="https://github.com/user-attachments/assets/dcd9ac8f-7d30-491c-ae6c-537267beb7dc" alt="x86 Registers" />
|
||
<img width="817" height="376" alt="Image" src="https://github.com/user-attachments/assets/c4959106-9da4-4c78-a2b7-6c94e360a89e" />
|
||
</div>
|
||
|
||
|
||
## Сборка проекта
|
||
|
||
Проект написан на C# под `.NET 8`
|
||
|
||
Вам должно хватить `dotnet build` для сборки всех проектов отдельно.
|
||
|
||
Все приложения кросс-платформенные, в том числе UI.
|
||
|
||
### Состояние проекта
|
||
|
||
- Поддержка всех `NRes` файлов - звуки, музыка, текстуры, карты и другие файлы. Есть документация.
|
||
- Поддержка всех `TEXM` текстур. Есть документация.
|
||
- Поддержка файлов миссий `.tma`.
|
||
- Поддержка шрифтов TFNT.
|
||
- Поддержка файлов скриптов `.scr`.
|
||
- Поддержка файлов параметров `.var`.
|
||
|
||
|
||
### Структура проекта
|
||
|
||
Внимание!
|
||
|
||
Проект делается как небольшой PET, поэтому тут может не быть
|
||
- чёткой структуры
|
||
- адекватных названий
|
||
- комментариев
|
||
|
||
Я конечно стараюсь, но ничего не обещаю.
|
||
|
||
## Для Reverse Engineering-а использую Ghidra
|
||
|
||
### Наблюдения
|
||
|
||
- Игра использует множество стандартных библиотек, в частности stl_port, vc++6 и другие. Если хотите что-то изучить в игре, стоит поискать по строкам и сигнатурам, что именно используется в конкретной `dll`.
|
||
- Строки в основном используются двух форматов - `char*` и `std::string`. Последняя состоит из 16 байт - `undefined4, char* data, int length, int capacity`.
|
||
- В игре очень много `inline` функции, которые повторяются по куче раз в бинарнике.
|
||
- Игра загружает и выгружает свои `dll` файлы по несколько раз, так что дебаг с `Memory Map` очень затруднён.
|
||
- Игра активно и обильно течёт по памяти, оставляя после чтения файлов их `MapViewOfFile` и подобные штуки.
|
||
- Игра нормально не работает на Win10. Мне помог dgVoodoo. Хотя с ним не работает `MisEditor`.
|
||
|
||
## Контакты
|
||
|
||
Вы можете связаться со мной в [Telegram](https://t.me/bird_egop).
|