GTA Vice City > Программирование
GTA VC. Базы данных.
(1/1)
DK:
С выходом Android-версий GTA мы получили чуть больше информации о коде игры.
Имена классов, функций, переменных (почти всех) - ко всему этому мы получили доступ.
Если раньше мы давали функциям и классам "свои" имена (например, настолько привыкшийся CScriptThread), то теперь у нас есть оригинальные названия всего этого.
Различия между Android и PC базами
В первую очеред, это, конечно разная архитектура, и разные команды низкоуровневого кода. Если вы совсем не разбираетесь в ассемблерном коде ARM, может в некой мере спасти ARM-декомпилятор в IDA.
Также не стоит забывать, что разработчики, которые занимались мобильной версией игры, внесли в неё некоторые изменения (это и изменения, связанные с особенностями девайсов (другая файловая система, другой движок аудио, как пример), так и улучшения/исправления оригинального кода игры).
Ещё стоит сказать, что в мобильных версиях используется не Direct3D, а OpenGL версия RenderWare Graphics.
Ну и третье - в базе PC (только VC/III) представлены только те функции, которые действительно используются в игре (неиспользуемые не были добавлены в испольняемый файл компилятором). В базе мобильной версии такие функции могут встречаться.
Перенос названий из Android-версии базы в PC-версию
Описанные выше причины могут затруднить процесс переноса имён. У нас есть имена, но надо же ещё понять, какие функции из PC-базы соответствуют этим именам. Тем более, могут быть функции, которых нету в PC-версии, или же наоборот.
Тут уже нужно применять арсенал комплексных мер - анализ вызовов (ссылок) в двух базах, сравнение псевдокода, и даже порядок (очередность) функций.
Имена функций/переменных в Android-версии базы имеют вид
--- Код: C++ ---_ZN11CTheScripts14LoadAllScriptsEPhjЭто такой вид декорации имён (name-mangling'а). Просто копируем эту строчку и вставляем в название функции/переменной в PC-базе. IDA умеет транслировать такие имена, и в списке функций или в коде декомпилятора мы увидим привычные имена.
maxorator уже перенёс имена почти всех функций в базу PC - правда, речь только о функциях. Имена переменных не перенесены.
Также, некоторые функции сопоставлены неправильно (редкие случаи).
Именно с этой базой я работаю, если речь идёт о Vice City.
База, основанная на базе maxorator'а (15.10.2016)
Android-база Vice City
Shagg_E:
Ого, а поговаривали еще, что в мобилках не RW...
Спс за новую базу для Вайса!
JuGGerNaunT:
Спасибо за базу. А стоит ли надеется на то, что будет выложена обновленная версия?
DK:
В чат-сервере plugin-sdk в Discord публикуются актуальные базы для SA/VC/III (раздел gta-ida-idb).
Навигация
Перейти к полной версии