Показать сообщение отдельно
  #5  
Старый 25.10.2014, 15:22
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Называется "Песочница" (Sandbox).
Цитата:
Есть возможность запустить exe из другой программы и полностью управлять его импортами, в том числе импортами библиотек, которые он подгружает. Подменяем вызов CreateFile на что-то, возвращающее "INVALID_HANDLE", и радуемся.
Это для простых программ. Ничто не мешает программе руками загрузить kernel32 или сразу ntdll, предварительно его дропнув из своих ресурсов (сразу в память). Можно даже заменить в коде слово CreateFile на HelloWorld и импортировать по нему. Или получать адрес функции вручную не по имени, а по сигнатуре. Короче, вариантов море, и при применении любого из них уже никакой сторонний наблюдатель не сможет отследить, что происходит обращение к файлу.

Так что сие решается только двумя путями.
Первое - драйвер, который, насколько я знаю, при желании может определить, кто его вызвал, после чего разрешить/запретить доступ. В крайнем случае драйвер может пропатчить syscall-таблицу, но при отсутствии должных знаний так можно добиться только BSOD'а (а также нарваться на PatchGuard в новых вендах). Любой нормальный антивирус будет очень ругаться.
Второе - эмулятор. Самопальная виртуальная машина с вендой, со своим почти пустым виртуальным диском и так далее. 100% рабочий метод. Но написать эмулятор - занятие не на 2 вечера. Проще всего использовать какой-нибудь qemu.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием