Запуск неРЕ файла из памяти

Тема в разделе "WASM.BEGINNERS", создана пользователем Aspire, 20 сен 2007.

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Приветсвую всех! Возможен ли сабж? Не понимаю как это реализовать. Например, в экзешнике валяется текстовый файл (readme.txt :)), который нужно запустить с помощью программы "по умолчанию" для данного расширения (может, с помощью notepad'a, а может, с помощью word'a), без сохранения файла на диск...
    Какая дикая мысль.. )))
     
  2. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    запускать процесс программы с помошью которой ты собрался открывать этот файл, инжектится в неё, перехватывать OpenFile/CreateFile/GetFileSize/ReadFile/CreateFileMapping/MapViewOfFile итд. итп. и подсовывать свои данные не вызывая оригинальных обработчиков при попытке акцесса к файлу который ты открыть собираешься...

    первое, что пришло в голову, возможно есть и более оптимальные решения
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Можно запустить то что требуется.
    Скопировать своё содержание в клиппорд и имитировать туда вставку.
    За кривоту способа не критикуйте:)))
     
  4. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    создать виртуальный диск сохранить на него фаил и скормить кому надо. :)
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Cr4sh Довольно непростой способ, тем более хотелось бы открывать файл программой "по умолчанию".
    asd Мне кажется, что это то, что надо. Щаз начну копать, если нетрудно, пособите комментами или ссылками якими...Спасибо.
    ЗЫ. Я надеюсь, туда не надо будет файловую систему внедрять? Честно говоря, понятия не имею как это делается, но интересно )))
     
  6. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    зато самый надёжный, да и сложного я в нём ничего не вижу... программу по умолчанию для конкретного типа файлов можно узнать вызвав FindExecutable(), или найти в реестре вручную
     
  7. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Cr4sh Мне нужно об этом почитать. Думаю, что перехватывать OpenFile и CreateFile, в запускаемой программе, особого смысла не имеет, т.к. им передается только имя файла, которое будет в любом случае указывать на мой экзешник, а вот CreateFileMapping/MapViewOfFile ....Вобщем, спасибо за идею, буду смотреть.
     
  8. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Почему? Создавай процесс с параметром, где передавай имя txt файла(по-сути любой), т.е. в параметр lpCommandLine функции CreateProcess клади что-нибудь вроде "notepad.exe FakeFile.txt", при перехвате CreateFile смотри параметр lpFileName, если там "FakeFile.txt", то возвращай какой-нибудь фейковый Handle, допустим 0xDEADBEEF, после при срабатывании перехвата на ReadFile смотри что там в параметре hFile, если 0xDEADBEEF, то подсовывай свои данные в lpBuffer. Всё действительно достаточно просто.
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    W4FhLF Ага. Верно. Спасибо за подсказку.
    А что же там еще может быть, если я сам из экзешника собираюсь запустить процесс...;)

    PS Cr4sh,W4FhLF Ники у вас странные (в смысле непроизносимые). Шифруетесь ? )))
     
  10. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Aspire
    А что трудного запустить программу для файла по умолчанию
    , как писали, скопировать своё содержание в буффер обмена(клиппборд)
    и послать ей команду вставки(CTRL+V)?
    Или я что-то не допонимаю?
    Мож ось проще под это заточить?
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    wsd Видимо, в этом ничего сложного тоже нет, просто я такого никогда не делал, поэтому несовсем ясно представляю как это реализовать на ассемблере, а именно: скопировать содержимое в буфер обмена и послать ей комманду вставки. Тут видимо требуется всего лишь пара API функций, но я их еще не проходил )) (в этом плане мне ближе перехват). Скопировать содержимое в буффер - тут, наверное мне нужно почитать про функции Clipboard'a. Послать комманду вставки - как? Эмуляцией нажатия клавиш или нажатием пункта меню?
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Aspire
    я хз че тут непроизносимого - "креш" и "вульф".
     
  13. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Aspire
    В MSDN это всё с лихвой описано.
    У клиппорда вообще мизерный апи.
    Посылать туда(что запустил) просто эмуляцию нажатия CTRL+V SendMessagge-ом
    он там как горячая клавиша сработает и вставится Ваше дело.
    Cr4sh,W4FhLF это лучшие вирусологи,троянщики и руткитчики
    и поэтому предлогали свою высшепилотажную технику.
    Но она тут не требуется.
    А ники у них действительно обычные.

    Успехов!
     
  14. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    про клипбоард бред.
    хочу например открыть файл в проге, в которую нельзя из буфера вставлять. например формат pdf, или djvu, различные просмотрщики картинок тоже идет лесом. оптимум имхо через виртуальный диск.
     
  15. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    n0name
    Он сначала упоминал тхт
    пдф джву и картинки(смотря в чём) конечно не прокатит:)
    а так твой вариант универсальней:)
     
  16. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    n0name Ну и тогда, чтобы логично и красиво завершить данный топик, давайте кратенько рассмотрим алгоритм третьего предложенного варианта решения сабжа, тобишь создание виртуального диска. По первым двум вариантам, мне довольно доходчиво объяснили, можно даже в МСДН не заглядывать ;)
    Про создание виртуального диска, я вообще ничего не знаю, поэтому рад буду узнать на какие функции обратить внимание.
     
  17. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    проще всего через драйвер.
     
  18. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    n0name
    можно подробней?
    тоже интересно:)
    и можно из r3?
     
  19. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    wsd Поддерживаю. Драйвера я еще не начинал ломать )))
    n0name Я понимаю, что краткость - сестра таланта, но только, наверное не в таком варианте ;)
     
  20. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    пример есть в KmdKit.
    для r3 не уверен что возможно создать ram disk/