Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.10.2014, 01:01
stas971 stas971 вне форума
Прохожий
 
Регистрация: 10.06.2014
Сообщения: 15
Версия Delphi: xe3
Репутация: 10
По умолчанию exe в вакууме или как приложение отгородить от системы

Вопрос такой: как реализовать , чтобы exe не имел доступа к файловой системе. Это нечто схожее с драйвером файловой системы, но тогда ведь ни одно приложение не будет иметь доступ, а мне нужно определенное.
Если же без драйвера не обойтись, то не подскажите еще вот, что:
можно ли программно создать юзера в винде, запретить этому юзеру всякое действие в системе(открытие , чтение всяких файлов и т.п), а потом запустить другую программу в созданном юзере, будучи в имеющимся ? надеюсь кто то понял ;D Если кто то встречался , то подскажите .

есть тут пример http://www.delphisources.ru/pages/so...protector.html есть что то подобное, но для всего диска ?

Последний раз редактировалось stas971, 25.10.2014 в 01:03.
Ответить с цитированием
  #2  
Старый 25.10.2014, 01:05
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Есть возможность запустить exe из другой программы и полностью управлять его импортами, в том числе импортами библиотек, которые он подгружает. Подменяем вызов CreateFile на что-то, возвращающее "INVALID_HANDLE", и радуемся.

Пример писать не буду, гуглите сами.

И, да, естественно все антивирусы будут очень неприлично ругаться на такое поведение.
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 25.10.2014, 01:16
stas971 stas971 вне форума
Прохожий
 
Регистрация: 10.06.2014
Сообщения: 15
Версия Delphi: xe3
Репутация: 10
По умолчанию

спасибо за направление, а не подскажите правильное название этой процедуры/функции, по которой нужно гуглить ?
Ответить с цитированием
  #4  
Старый 25.10.2014, 11:17
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Шта?!

Берете жавамашину, настраиваете и в ней запускаете жавапрограмму, вот вам и программа в вакууме.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #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.

Последний раз редактировалось Bargest, 25.10.2014 в 16:04.
Ответить с цитированием
  #6  
Старый 25.10.2014, 17:09
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
Но написать эмулятор - занятие не на 2 вечера. Проще всего использовать какой-нибудь qemu.
Внимание, срыв покровов!
http://www.delphisources.ru/pages/so...-emulator.html
Правда исходник галимый и представляет из себя Бокш, портированный на дельфи.

Будучи студентом, использовал чать кода этого (за основу была взята другая версия исходника, со значительным количеством исправлний в работе) проекта для своего курсача:
Изображения
Тип файла: png vdebug.png (183.6 Кбайт, 12 просмотров)
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию

Последний раз редактировалось M.A.D.M.A.N., 25.10.2014 в 17:19.
Ответить с цитированием
  #7  
Старый 25.10.2014, 17:46
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Правда исходник галимый и представляет из себя Бокш, портированный на дельфи.
Интересно, запустится ли на этой поделке винда.
А вообще, хоть борщ, хоть куему, хоть вбокс - не важно. VBox вообще куски кода куему юзает. Не удивлюсь, если и куему с борщем не сильно отличаются.
Но это решение все-таки совсем не написание эмулятора, это портирование или небольшие модификации. В данном случае так и надо делать.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #8  
Старый 25.10.2014, 17:50
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Bargest
Интересно, запустится ли на этой поделке винда.
Windows 3.11 с образа дискетки запускалась, только с отключенным FPU, ибо как-то криво он эмулируется.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


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

Цитата:
Windows 3.11
Ну он почти дос. Он 16-битный, и вообще над ДОС-ом работает.
Я же говорю хотя бы про какой-нибудь WinXP.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #10  
Старый 29.10.2014, 22:15
stas971 stas971 вне форума
Прохожий
 
Регистрация: 10.06.2014
Сообщения: 15
Версия Delphi: xe3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Называется "Песочница" (Sandbox).

к сожалению, никаких примеров песочниц на делфи я не нашел ((( не поможете с примером ?
подумываю сделать что то типо такого : программно создать нового юзера, запретить ему любые действия как в реестре так и в любой директории, операциями с файлами и запустить определенный софт под ним ... как считаете, это разумно ? или есть куда лучше и легче способ ?

Последний раз редактировалось stas971, 29.10.2014 в 22:20.
Ответить с цитированием
  #11  
Старый 30.10.2014, 00:27
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
запретить ему любые действия как в реестре так и в любой директории
А как он тогда запустит программу? Запуск программы - это как минимум открытие файла приложения. А если приложение пишет временные файлы (а многие так делают)?
Запретить доступ в реестре можно, но полностью ко всем директориям не думаю, что получится.
Цитата:
к сожалению, никаких примеров песочниц на делфи я не нашел (((
Песочница - довольно сложная вещь, и их редко пишут. Вероятность найти на делфи очень низка. А вот песочницо-детекторов хватает.
Если искать, то на Си всякие opensource sandbox.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 30.10.2014 в 00:31.
Ответить с цитированием
  #12  
Старый 02.11.2014, 16:05
stas971 stas971 вне форума
Прохожий
 
Регистрация: 10.06.2014
Сообщения: 15
Версия Delphi: xe3
Репутация: 10
По умолчанию

в общем, найти пример песочницы на делфи практически не реален ((( . Слышал, что в ddk (или уже wdk) имеется пример мини фильтра. Загрузил ddk версии 7600, проверил, вроде и в правду имеется в примерах. Но проблема не решена, есть ли ddk под delphi ? или именно этот пример. Не подскажите ?
Ответить с цитированием
  #13  
Старый 02.11.2014, 16:16
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

А при чем тут ддк и дельфи? ДДК -- это набор инструментов для разработки драйверов.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #14  
Старый 03.11.2014, 14:32
stas971 stas971 вне форума
Прохожий
 
Регистрация: 10.06.2014
Сообщения: 15
Версия Delphi: xe3
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
А при чем тут ддк и дельфи? ДДК -- это набор инструментов для разработки драйверов.
ну так , один из вариантов решения моего вопросы было написание драйвера фильтра файловой системы, и вроде как в ДДК он присутствует.Вот и спросил, может где то есть ддк на делфи или именно тот пример.
Ответить с цитированием
  #15  
Старый 03.11.2014, 20:20
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

ДДК сишная шляпа. В принципе есть дикий, извращённый способ скомпилировать драйвер на дельфи.

Я понимаю, если бы вы задали вопрос «как скомпилировать драйвер и обратиться к нему из дельфи», вот это было бы логично.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter