Как перехватать обращение к любому файлу и записать путь до него в txt

Тема в разделе "WASM.WIN32", создана пользователем 220V, 15 июн 2009.

  1. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    Привет всем. У меня возникла проблема. Думал, как реализовать, да ничего не вышло. Читал инфу в инете, тоже ни фига не вышло((
    Мне нужно, чтобы когда пользователь открывал, т.е обращался к файлу (к любому в системе, хоть видеофайл, хоть документ) - программа перехватывала открытие этого файла (но сам файл спокойно запускался), потом записала его имя и полный путь до него в ListBox. Как можно это реализовать? Неужели для этого надо писать драйвер? Или можно сделать перехват в user-mode? Помогите, чем можете. А то я уже совсем отчаялся(

    P.S. У меня возникали мысли, что это надо сделать через перехват NtCreateFile и NtOpenFile...
     
  2. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    P.P.S. В работе использую Delphi
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Тебе надо, чтобы твой перехватчик был в том процессе, который ты обрабатываешь. Если ты просто работаешь в виндовс с файлами, тогда тебе надо перехватывать работу эксплорер.ехе. Вобщем, суть такая: делаешь инжект (лучше всего в виде дллки) в нужные процессы, в них перехватываешь указанные тобой функции (обычный сплайсинг подойдет - можешь еще почитать тему "Перехват API"). Потом тебе надо в твою программу как-то переслать данные. Можешь сообщениями, можешь пайпами, мейлслотами... читай про IPC.

    Если спросишь, как это все делается или попросишь дать код - закидаю подушками!
     
  4. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    Все дело в том, что я не могу реализовать этот инжект( У меня все идет не так, функции не перехватываются( Поэтому прошу рабочий код. За мной не заржавеет. Отплачу, чем смогу.
     
  5. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    MSoft
    Зааааряжай! Огонь!!
     
  6. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    deLight, вы можете писать по теме? Зачем же оффтопить и насмехатья....
     
  7. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    220V
    Что конкретно идет не так? Что уже сделал? Выложи код для начала..

    Самый простой способ для тебя в данной ситуации - пропишись в AppInit_DLLs, в таком случае твоя DLL будет податтачена грубо говоря к любому процессу, использующему user32.dll. В DllMain своей библиотеки проверяешь Reason на DLL_PROCESS_ATTACH, в случае равенства (т.е. тебя вызвали при запуске процесса) выполняешь сплайсинг или патчишь таблицу импорта ntdll.dll для нужных ф-ций.
    В своей реализации NtCreateFile и NtOpenFile передаешь данные хост-процессу любым известным способом (проецируемые в память файлы (MMF) или любые остальные, базирующиеся на нем (MSoft перечислил).

    Что нужно - прочитать и понять любую нормальную статью по сплайсингу. Понять что такое синхронизация и разделяемая память, Рихтер в помосчь. Всё.
     
  8. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    ну может затем, чтобы ты хоть что-то попытался сделать или показать... вместо неинформативных криков о помощи .))
     
  9. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    А исходники filemon'a от Руссиновича разве не открыты?
     
  10. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    halyavin
    вряд ли они написаны на компонентах - а тут язык делфи, чисто компоненты нужны. Статей по сплайсингу как грязи. Но ТС не пишет, что конкретно он сделал, по какой статье и где у него разница в результатах. Делаю вывод: он ничего не читал и не собирается.

    П.С.: мс-рем на делфи такое реализовывал. И его сорцы есть в сети. Гугли или иди в коммерц. Но там за такие кодесы много просят.
     
  11. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    Результаты работы выложу, но только завтра.
     
  12. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    deLight
    ггг я бы не сказал, что самый простой...
    ReadDirectoryChanges()
    А вот тебе описалово.


    P.S. А поиском пользоваться религия не позволяет??? На форуме уже не раз поднималась тема
     
  13. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    Вот... http://ifolder.ru/12669151. И встает вопрос как сделать передачу данных в мою программу?.
     
  14. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    220V
    ты издеваешься? нет, серьезно?
    я сейчас точно матюкаться буду. Что ж за молодежь такая неумная пошла...
     
  15. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    MSoft, может вы не бужете тут из себя строить гуру программирования??? Я имел ввиду как это реализовать. Например, я в отличие от вас не знаю, что такое пайпы и мейлслоты... Мне кажется тут только насмехаться умеют, а вот, чтобы реально человеку помочь....
     
  16. Rodin

    Rodin New Member

    Публикаций:
    0
    Регистрация:
    30 апр 2007
    Сообщения:
    125
  17. 220V

    220V New Member

    Публикаций:
    0
    Регистрация:
    15 июн 2009
    Сообщения:
    10
    Rodin, в выше прикрепленном проекте, у меня ошибка. Компилятор ругается на одну из строку в Nativeapi.pas. Могли бы вы посмотреть в чем дело? Мне осталось реализовать только запись в txt файл.
     
  18. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    OMFG я торчу!
     
  19. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    220V
    хорошо, спрошу по-другому: а что ты прочитал, чтобы заявить, что с пайпами, мейлслотами и т.д. у тебя ничего не получается? Или ты весь день пролежал на диване, а я тебе код готовый должен был написать? МСДН в зубы и работь, а не телевизор смотреть!!! Я тебе дал названия инструментов, дал назвзание технологии, статьи есть на васме с примерами... ЧТО ТЕБЕ НАДО?! Готовый код? А ты в этот момент что делать будешь? Мультики смотреть? Так у меня тоже есть чем заняться, вместо того, чтобы кому-то кодить бесплатно.
    Я в свое время писал модуль, чтобы можно было общаться между процессами, драйверами и прочими как на сокетах. Цена 700$. Не хочешь вбить в гугл или мсдн (или хотя бы в поиск васма) 1-2 слова? Готовь 700$ и у тебя ipc.lib, который можешь прикрутить куда угодно.

    Ппц лентяи пошли.
     
  20. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    драйвер - обязательно, для подтверждения попробуйте на форуме поискать, и 100% поймете, что тут только драйвер нужен, так что забейте на все эти попрашайничества сразу, оплатите код и будут вам имена в LisBox'ах.