как написать свой "прокси" для файлов
программа защищена x-trap'ом от отладки и мониторинга, пойду x-trap'у писать, чтобы сняли для меня защиту
chroot?
chroot?даже если так, то программа запускается с пользовательскими правами
А что нельзя программу с правами отдельного пользователя запустить через runas?
есть некая программа P, которая читает данные из файла F, исходный код программы не доступенА открытие файла в программе P разве не является просмотром?
необходимо защитить файл F от изменений и просмотра
В каком окружении все это работает? Что может делать пользователь, от чего стоит защищаться? Требуется ли переносимое решение (набор файлов, включающий F, P и твою программу, такой, что его можно открыть на любой машине, но файл будет виден только в F после запуска твоей программы)?
Потому что под текущее описание подходит, например, и такой use case:
1. Есть терминал, на котором доступны F и P.
2. Терминал недостаточно анально огорожен: например, пользователь может втыкать в него флешки.
3. Нужно не дать пользователю унести с собой файл.
В этом случае, как уже сказали, проблема решается чисто административно, правильной настройкой прав доступа.
Перехват API может выполняться как-то так. Если выполнять инъекцию при создании процесса (DetourCreateProcessWithDll то "защита от отладки и мониторинга" не сработает (в отличие от "защиты от инъекций", да). Ну и совсем хардкорный вариант — это написание драйвера-фильтра.
Реализация шифрования, опять же, зависит от постановки задачи. Можно вообще xor'ить файл со случайной последовательностью той же длины, недоступной пользователю.
есть некая программа P, которая читает данные из файла F, исходный код программы не доступенИзменений кем? Этой программой? Копировать перед запуском, восстанавливать после работы.
необходимо защитить файл F от изменений и просмотра
платформа - Win
А что нельзя программу с правами отдельного пользователя запустить через runas?нет
программа - игра
файл - архив с ее ресурсами
никакой возможности защитить файл нету
так что остается защищать информацию в этом файле
контролировать что-то на компьютере пользователя - невозможно
единственная доступная вещь - игра запускается через лаунчер, исходные коды, которого у меня есть
лаунчер запускается с правами админа, умеет проверять и обновлять игру и ее ресурсы
цель - защитить от школо-какеров ресурсы игры, т.к. их можно менять во время исполнения программы
Изменений кем?пользователем, в общем случае с правами администратора
цель - защитить от школо-какеров ресурсы игры,купить и накатить готовую конвертную защиту?
купить и накатить готовую конвертную защиту?это всегда можно
тем более, что сегодня решили проблему путем пинания разрабов x-trap
но у меня остался чисто академический интерес
А открытие файла в программе P разве не является просмотром?спасибо, за ответ
В каком окружении все это работает? Что может делать пользователь, от чего стоит защищаться? Требуется ли переносимое решение (набор файлов, включающий F, P и твою программу, такой, что его можно открыть на любой машине, но файл будет виден только в F после запуска твоей программы)?
Потому что под текущее описание подходит, например, и такой use case:
1. Есть терминал, на котором доступны F и P.
2. Терминал недостаточно анально огорожен: например, пользователь может втыкать в него флешки.
3. Нужно не дать пользователю унести с собой файл.
В этом случае, как уже сказали, проблема решается чисто административно, правильной настройкой прав доступа.
Перехват API может выполняться как-то так. Если выполнять инъекцию при создании процесса (DetourCreateProcessWithDll то "защита от отладки и мониторинга" не сработает (в отличие от "защиты от инъекций", да). Ну и совсем хардкорный вариант — это написание драйвера-фильтра.
Реализация шифрования, опять же, зависит от постановки задачи. Можно вообще xor'ить файл со случайной последовательностью той же длины, недоступной пользователю.
Detours уже читаю маны
в общем случае задача выглядит так: защитить информацию в файле от просмотра, при этом оставить возможность для избранных приложений читать этот файл без проблем, настройка прав доступа, рабочая среда и т. д. контролю не поддаются
т.е. надо написать связку: зашифрованый файл + процесс, отвечающий за расшифровку информации и контроль доступа
уровень защиты - защита от школо-хакеров (т.е. писать жесткий руткит не надо)
у меня, видимо, проблемы с формулировкой задачи, если предлагают варианты с правами доступа
PS для тестов написал простенькую прогу, которая читает файл fgets'ом, залез в нее ollydbg и офигел от кол-ва прокладок между fgets и readfile
"защита от отладки и мониторинга" не сработает (в отличие от "защиты от инъекций", да). Ну и совсем хардкорный вариант — это написание драйвера-фильтра.x-trap палит procmon, к примеру, судя по всему из-за наличия устройства и драйвера файловой системы, при этом программа просто не запускается при наличие таких устройств и драйверов
Перехват API может выполняться как-то так.я правильно понимаю, что там "нужный вызов" WinApi просто подменяется на JMP FAR или подмена идет в таблице импорта?
он пооткрытей, чем detours и 64-битную архитектуру поддерживает.
правда собирается под gcc.
мои соседние вопросы в разделе - по нему
в кукумоне по адресу начала кода апишной функции вставляется jmp far
Оставить комментарий
PooH
сейчас попробую описать задачуесть некая программа P, которая читает данные из файла F, исходный код программы не доступен
необходимо защитить файл F от изменений и просмотра
платформа - Win
пока что думаю над неком процессе, который будет выполнять проксирование файла, а сам файл будет зашифрован каким-нибудь хорошим и быстрым алгоритмом
проксирование собираюсь исполнить через хуки на вызов ReadFile, CreateFile и т.д. программой, либо технологией "hot patchin"
прошу подсказать материалы по этой фигне (наверняка, это не настолько редкая задача)
+ какой-нибудь хороший алгоритм шифрования, чтобы можно было обращаться к произвольному куску файла без сильных задержек