Предисловие:
Игровые файлы, текстуры, звуки, модели, etc компилируются в .so
или .dll
библиотеку которые динамически (через SDL_LoadObject()) подключаются к движку и он уже автоматически извлекает char *
буферы файлов по запросу имени типа "asset/texture.dds"
и посредством SDL_RWFromConstMem()
передаются в обработчики. После получения ресурсов библиотека выгружается дабы не занимать память.
Суть:
Пока что у меня всё тупо, гружу библиотеку пробую загрузить от туда функцию const char * asset_lib_verify(const char * msg)
если она есть передаю ей "ping"
в ответ она должна отправить "pong"
и если всё ок я уже запрашиваю указатель на структуру с данными.
А на будущее хочется как то проверять что библиотека с ресурсами не была подменена, ну например как мера защиты от читеров если такое потом будет нужно.
Первая мысль компилирую ресурсы, получаю sha256 скомпилированной библиотеки, затем перед загрузкой so`шки проверяю хеш и если он отличается то выкидываю ошибку иначе спокойно загружаю.
Но мне кажется это ненадёжным ведь sha строку в самом приложении могут вручную перебить на нужную.
Есть какие идеи как проверять загружаемую библиотеку так что-бы это нельзя было обойти, ну или хотя бы что-бы это было сложно или муторно как минимум обойти.
UDP: В долгий ящик или на помойку, пока что вывод >> ненужно © <<