Предисловие:


Игровые файлы, текстуры, звуки, модели, etc компилируются в .so или .dll библиотеку которые динамически (через SDL_LoadObject()) подключаются к движку и он уже автоматически извлекает char * буферы файлов по запросу имени типа "asset/texture.dds" и посредством SDL_RWFromConstMem() передаются в обработчики. После получения ресурсов библиотека выгружается дабы не занимать память.


Суть:


Пока что у меня всё тупо, гружу библиотеку пробую загрузить от туда функцию const char * asset_lib_verify(const char * msg) если она есть передаю ей "ping" в ответ она должна отправить "pong" и если всё ок я уже запрашиваю указатель на структуру с данными.


А на будущее хочется как то проверять что библиотека с ресурсами не была подменена, ну например как мера защиты от читеров если такое потом будет нужно.


Первая мысль компилирую ресурсы, получаю sha256 скомпилированной библиотеки, затем перед загрузкой so`шки проверяю хеш и если он отличается то выкидываю ошибку иначе спокойно загружаю.


Но мне кажется это ненадёжным ведь sha строку в самом приложении могут вручную перебить на нужную.


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









 , , , ,






URL записи