Не пойму чем не подходит способ предложенный тов. Cr4sh ? 1) Находишь приложение связанное с данным типом файла (не нашел - обломись) 2) Запскаешь его с параметром - путь к файлу путь может быть любым но желательно чтоб такого небыло. 3) Инжектируешь код перехватывающий CreateFile/GetFileSize/ReadFile/CreateFileMapping/MapViewOfFile 4) Если в параметрах CreateFile передается имя то которое ты указал в параметре при запуске мапишь данные с атрибутами read/write, присваиваешь хендл 0xFFFFFF0 5) В обработчике GetFileSize если обращаются к хэнделу 0xFFFFFF0 возвращаешь размер замапенного файла 6) В обработчике ReadFile если обращаются к хэнделу 0xFFFFFF0 возращаешь кусок данных считанный из замапенного файла 7) CreateFileMapping/MapViewOfFile возращаешь хэнделы из п 4 более простого способа просто нету
lamer2k Занимался я таким извратом. Есть куча файловых функций, их все нужно перехватить, чтобы узнать, какие нужно перехватывать. Хотя можно заюзать FileMon. Например, GetFileAttributes обязательно нужно перехватывать - многие проги проверяют с ее помощью наличие файла. Еще один геморрой в том, что некоторые проги зачем-то открывают файл несколько раз => нужно поддерживать структуру данных со всеми фейковыми хендлами. Да, и не забыть перехватить CloseHandle.
Мож, я не совсем въехал в дискуссию, но... Почему бы не создать во временной папке файл .txt, скинуть туда инфу из экзешника, а потом вызвать CreateProcess'ом или WinExec'ом notepad.exe c:\temp\myfile.txt ? А после открытия удалить его Так как-то проще, мне кажется...
Atlantic Ну не куча... всего несколько нативных функций. NtCreateFile,NtOpenFile,NtReadFile,NtQueryInformationFile
2 Atlantic т.е. это принципиально? Создать файл, а потом тут же удалить - не канает? 2 asd виртуальный диск... имеется в виду RAM-drive? потому что иначе тоже получается - на диск писать надо
Всем подходит, кроме одного: не нашел я пока приемлемого способа внедрения в процесс (чтобы антивирус не ругалсо). Когда найду, тогда и буду пользовать перехват. Если бы это канало, не было бы данного топика )))) --- Добавлено: По теме топика...еще не тестил, но помоему, только вариант копи-паста, предложенный wsd, оставит равнодушным проактивку..Плохо,что работает не везде..
Aspire а никуда инжектится и не надо, возьми найди приложения которое пускает нужный тебе файл и настрой его внутри себя как это делается при крит процесс в другом процессе, после хукай функции и все ... а если на то пошло при создание процесса до старта главного треда инжект разрешен, единственно кто тебе дас создать процесс = )
el- Извините, то что Вы говорите, очень интересно, только я по своей неопытности, видимо чег-то не допонимаю.... Ёёёёё...кажись, понял. Созданный процесс имеет с нашим общее адресное пространство? Обана... Добавлено: Или я гоню ?
Я уже посмотрел, что любой процесс имеет свое личное адресное пространство. А как тогда это ? PS. Особенно хотелось бы услышать пояснения к фразам "никуда инжектится и не надо" и "хукай функции и все ..."
Aspire нет тупо прога которая вам нужна будь это нотепад или айсидися читается с диска и настраивается в вашем процессе, никаких общик адресных пространств быть не может ... читаете экзе с диска, размещаете его по имадж бейс, размещаите секции по их смещениям, настраиваете импорт релоки и т.д. и передаете управление на энтрипоинт передав коммандную строку парам в виде фейкового файла, а дальше как было описано выше ... не уверен что здесь можно будет достичь 100% стабильности но тем не менее для джойнера который имхо вы пишете это нормально = )
Aspire Ты чё свой лоадер собрался писать? уж проще тогда как Cr4sh советовал сделать - писать много но не столько как лоадер)))