Автор Тема: GTA VC. Базы данных.  (Прочитано 789 раз)

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 233
  • Репутация: +323/-0
    • dk22pac
    • Просмотр профиля
GTA VC. Базы данных.
« : Октябрь 15, 2016, 09:40:29 pm »
С выходом Android-версий GTA мы получили чуть больше информации о коде игры.
Имена классов, функций, переменных (почти всех) - ко всему этому мы получили доступ.
Если раньше мы давали функциям и классам "свои" имена (например, настолько привыкшийся CScriptThread), то теперь у нас есть оригинальные названия всего этого.

Различия между Android и PC базами

В первую очеред, это, конечно разная архитектура, и разные команды низкоуровневого кода. Если вы совсем не разбираетесь в ассемблерном коде ARM, может в некой мере спасти ARM-декомпилятор в IDA.

Также не стоит забывать, что разработчики, которые занимались мобильной версией игры, внесли в неё некоторые изменения (это и изменения, связанные с особенностями девайсов (другая файловая система, другой движок аудио, как пример), так и улучшения/исправления оригинального кода игры).
Ещё стоит сказать, что в мобильных версиях используется не Direct3D, а OpenGL версия RenderWare Graphics.

Ну и третье - в базе PC (только VC/III) представлены только те функции, которые действительно используются в игре (неиспользуемые не были добавлены в испольняемый файл компилятором). В базе мобильной версии такие функции могут встречаться.

Перенос названий из Android-версии базы в PC-версию

Описанные выше причины могут затруднить процесс переноса имён. У нас есть имена, но надо же ещё понять, какие функции из PC-базы соответствуют этим именам. Тем более, могут быть функции, которых нету в PC-версии, или же наоборот.
Тут уже нужно применять арсенал комплексных мер - анализ вызовов (ссылок) в двух базах, сравнение псевдокода, и даже порядок (очередность) функций.

Имена функций/переменных в Android-версии базы имеют вид
Код: C++
  1. _ZN11CTheScripts14LoadAllScriptsEPhj
Это такой вид декорации имён (name-mangling'а). Просто копируем эту строчку и вставляем в название функции/переменной в PC-базе. IDA умеет транслировать такие имена, и в списке функций или в коде декомпилятора мы увидим привычные имена.

maxorator уже перенёс имена почти всех функций в базу PC - правда, речь только о функциях. Имена переменных не перенесены.
Также, некоторые функции сопоставлены неправильно (редкие случаи).
Именно с этой базой я работаю, если речь идёт о Vice City.

База, основанная на базе maxorator'а (15.10.2016)
Android-база Vice City
« Последнее редактирование: Октябрь 15, 2016, 10:11:18 pm от DK »
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv

Оффлайн Shagg_E

  • Главный Модератор
  • Постоялец
  • *****
  • Сообщений: 536
  • Репутация: +19/-0
  • Изобретательный Рукожопъ
    • Просмотр профиля
    • NewRockstar
Re: GTA VC. Базы данных.
« Ответ #1 : Октябрь 16, 2016, 05:33:40 am »
Ого, а поговаривали еще, что в мобилках не RW...
Спс за новую базу для Вайса!

Оффлайн JuGGerNaunT

  • Призрак
  • Сообщений: 1
  • Репутация: +0/-0
    • Просмотр профиля
Re: GTA VC. Базы данных.
« Ответ #2 : Февраль 02, 2018, 09:52:09 pm »
Спасибо за базу. А стоит ли надеется на то, что будет выложена обновленная версия?

Оффлайн DK

  • Новичек
  • **
  • Сообщений: 233
  • Репутация: +323/-0
    • dk22pac
    • Просмотр профиля
Re: GTA VC. Базы данных.
« Ответ #3 : Февраль 04, 2018, 03:32:30 pm »
В чат-сервере plugin-sdk в Discord публикуются актуальные базы для SA/VC/III (раздел gta-ida-idb).
Plugin-SDK https://github.com/DK22Pac/plugin-sdk

Discord-сервер по plugin-sdk и программированию в GTA
RU https://discord.gg/QEesDGb
ENG https://discord.gg/zaVqFQv