Taraflex
@Taraflex
Ищу работу. Контакты в профиле.

Эмуляция файловой системы в памяти. Как работает Enigma Virtual Box?

Есть некоторая библиотека, код которой мы не можем менять. Библиотека работает с файлами.
Нужно заставить работать библиотеку с произвольными потоками данных (а не только с файлами на харде).
Либа не проектировалась изначально под qt поэтому через qrc:// не работает.

Направление в котором я предполагаю стоит копать habrahabr.ru/post/90377

но
Для создания в памяти функции-трамплина нельзя использовать операторы new и delete для работы с динамической памятью, так как память выделяется в секции данных с запретом на исполнение кода, а изменением прав на динамическую память вы открываете недоброжелателям возможность выполнить переполнение буфера.


Допустим мне плевать на недоброжелателей, как мне тогда нужно действовать, чтобы не терять возможность выделения памяти.
  • Вопрос задан
  • 3141 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Sumor
Прежде чем начать перехватывать вызовы системных функций попробуйте другие способы.
Можно использовать ram-диск. Если поддерживается URL, то можно организовать виртуальный или реальный веб-сервер. Если используется SQLServer 2012 или выше, то там есть возможность таблицей имитировать файловую систему.

Если же хочется всё-таки заниматься перехватом, то можно посоветовать, в частности, следующую литературу:
Классика — Рихтер
Цикл статей про ассемблер, некоторые из них могут быть полезными для понимания процессов перехвата — Wasm.ru
В частности, статья про перехват — Система перехвата функций API платформы Win32
Ответ написан
@vikarti
меня возможно будут критиковать но...возможно стоит использовать готовое решение от www.boxedapp.com/boxedappsdk , если устроит цена?
реализовано оно через перехват, с учетом многих...заморочек
у меня опыт использования только положительный.

из недостатков:
- да это не самая дешевая штука особенно если нужны исходники
- обычно в комплекте год поддержки а затем обновление...а обновление может быть обязательным (у меня с Windows 8 без него были глюки)
- если в проекте используется протектор = готовимся общаться сразу с двумя техподдержками
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы