Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2014, 18:33   #11
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от stasa9711 Посмотреть сообщение
дык там для для локального приложения функции , тобишь для своего ....

но где указать куда она должна внедрятся ? тобишь в какую программу ? + еще как я понял, она внедряется во все библиотеки программы , но как ей казать, что нужно делать? (в моем случаи нужно блокировать все действия с файловой системой) или это нужно указать в самой библиотеке hook_splice_lib ?
Разъясните пожалуйста если не трудно
1)Хуки внедряются во всю систему, а не отдельное приложение. Так как они глобальные.
2)Тут смотрим на саму библиотеку. Она должна не дать произвести изменение в указанной директории, после выдать событие, в котором в качестве параметра должно быть то что пытались сделать.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 21.06.2014, 21:13   #12
stasa9711
Форумчанин
 
Регистрация: 01.10.2012
Сообщений: 106
По умолчанию

Значит, чтоб не дать произвести изменения в директории , нужно это вписать в библиотеку, так ? вот библиотека :
Код:
library hook_splice_lib;
 
uses
  Windows,
  CommonHotPatch in '..\common\CommonHotPatch.pas';
 
{$R *.res}
 
procedure DLLEntryPoint(dwReason: DWORD);
begin
  case dwReason of
    DLL_PROCESS_ATTACH:
    begin
      // инициализируем структуру для перехватчика
      InitHotPatchSpliceRec;
      // пишем прыжок в область NOP-ов
      SpliceNearJmp(PAnsiChar(HotPathSpliceRec.FuncAddr) - 5, HotPathSpliceRec.SpliceRec);
      // перехватываем MessageBoxW
      SpliceLockJmp(HotPathSpliceRec.FuncAddr, LOCK_JMP_OPKODE);
    end;
    DLL_PROCESS_DETACH:
    begin
      // при выгрузке библиотеки снимаем перехват
      SpliceLockJmp(HotPathSpliceRec.FuncAddr, HotPathSpliceRec.LockJmp);
    end;
  end;
end;
 
function HookProc(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall;
begin
  Result := CallNextHookEx(0, Code, WParam, LParam);
end;
 
exports
  HookProc;
 
begin
  DLLProc := @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.
тобишь тут , библиотека отвечает за перехват функции, но вот как запретить изменения ?
stasa9711 вне форума Ответить с цитированием
Старый 21.06.2014, 21:14   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

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

Цитата:
но как ей казать, что нужно делать?
Изучайте Interprocess Communications

Цитата:
(в моем случаи нужно блокировать все действия с файловой системой) или это нужно указать в самой библиотеке hook_splice_lib ?
Чтобы блокировать доступ пользователя к папке, достаточно внедрить его explorer.exe и популярные файловые менеджеры.

Если делать глобально, то только в режиме ядра, т.е. писать сервис и драйвер.
Но можно и извратом заняться. Кому как нравится.
Перехватывать шаткий мостик между режимом ядра и пользовательским режимом. В драйвере же фильтровать Zw*** функции аналогично Nt*** в пользовательском.

Последний раз редактировалось Человек_Борща; 21.06.2014 в 21:24.
Человек_Борща вне форума Ответить с цитированием
Старый 22.06.2014, 10:15   #14
stasa9711
Форумчанин
 
Регистрация: 01.10.2012
Сообщений: 106
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Чтобы блокировать доступ пользователя к папке, достаточно внедрить его explorer.exe и популярные файловые менеджеры.
что вы имели в виду ?
И еще, тот пример , что я привел, может подойти ? в библиотеку library hook_splice_lib; (та, что перехватывает функции, код выше) дописать блокировку действий во всей системе и оповещения меня тому ,что она запретила ? насчет оповещения можно и пропустить т.к можно мониторить систему..
stasa9711 вне форума Ответить с цитированием
Старый 22.06.2014, 12:07   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
то вы имели в виду ?
То что написал, то и имею в виду. ловите процессы и внедряетесь в них. Об этом в той же статье написано.

Цитата:
И еще, тот пример , что я привел, может подойти ?
Минимум 2 метода вы должны использовать.

Цитата:
дописать блокировку действий во всей системе и оповещения меня тому ,что она запретила ?
Да.

Цитата:
насчет оповещения можно и пропустить т.к можно мониторить систему..
Нельзя.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка файловой системы Vadik4 Общие вопросы Delphi 1 08.06.2014 17:55
удаление файловой ссылки _Bers Общие вопросы C/C++ 5 02.04.2014 18:23
Драйвер файловой системы vedro-compota Общие вопросы C/C++ 2 26.01.2012 21:50
Устройство файловой системы Alexandr-vi-92 Операционные системы общие вопросы 2 06.11.2008 08:14