Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запустить exe из ресурсов, запустить файл не извлекая 
:(
    Опции темы
SAndrus
Дата 7.7.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 25.8.2005

Репутация: нет
Всего: нет



Доброе время суток,
приложение состоит из нескольких модулей, нужно в один модуль сохранить в ресурсы другой, и при необходимости запускать его.
часть модулей уже готова, в dll перекомпилить возможности нет.
Сохранять в файл на винт не хотелось бы, хотя как вариант можно и так.
Программирую в VC6 использую MFC.
Спасибо
PM MAIL   Вверх
icecrashldr
Дата 8.7.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 5.7.2010

Репутация: нет
Всего: нет



GetTempPath
FindResource(Вытаскивеш из ресуросов файл)
CreateFile
WriteFile
PM MAIL WWW   Вверх
chaos
Дата 8.7.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 4
Всего: 44



выделить кусок память под файл, выставить флаг для запуска и вперед?!
PM WWW   Вверх
Alexeis
Дата 8.7.2010, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 3
Всего: 459



Цитата(chaos @  8.7.2010,  11:43 Найти цитируемый пост)
выделить кусок память под файл, выставить флаг для запуска и вперед?! 

  В своем адресном пространстве?  smile Жжеш товарищ. Хорошо же будут 2 экзешника в одном адресном пространстве работать smile .
  Был один примерчик, когда запускалась программа cmd.exe в спящем виде, после чего в ее память заливался код другого экзешника (который был в ресурсах) и все это добро, во многих случаях, эвристикой определялось как вирусоподобная деятельность smile .
  По всей видимости, в юзермоде винда, позволяет стартовать процесс, только из источника к которому можно обратиться функцией CreateProcess.

Внутри производиться отображение файла на память
Код

NTSTATUS
NTAPI
RtlpMapFile(PUNICODE_STRING ImageFileName,
            ULONG Attributes,
            PHANDLE Section)
{
    OBJECT_ATTRIBUTES ObjectAttributes;
    NTSTATUS Status;
    HANDLE hFile = NULL;
    IO_STATUS_BLOCK IoStatusBlock;

    /* Open the Image File */
    InitializeObjectAttributes(&ObjectAttributes,
                               ImageFileName,
                               Attributes & (OBJ_CASE_INSENSITIVE | OBJ_INHERIT),
                               NULL,
                               NULL);
    Status = ZwOpenFile(&hFile,
                        SYNCHRONIZE | FILE_EXECUTE | FILE_READ_DATA,
                        &ObjectAttributes,
                        &IoStatusBlock,
                        FILE_SHARE_DELETE | FILE_SHARE_READ,
                        FILE_SYNCHRONOUS_IO_NONALERT | FILE_NON_DIRECTORY_FILE);
    if (!NT_SUCCESS(Status))
    {
        DPRINT1("Failed to read image file from disk\n");
        return Status;
    }

    /* Now create a section for this image */
    Status = ZwCreateSection(Section,
                             SECTION_ALL_ACCESS,
                             NULL,
                             NULL,
                             PAGE_EXECUTE,
                             SEC_IMAGE,
                             hFile);
    if (!NT_SUCCESS(Status))
    {
        DPRINT1("Failed to create section for image file\n");
    }

    ZwClose(hFile);
    return Status;
}


Ключевые тут вызовы ZwOpenFile и ZwCreateSection. По сути в перехвате нуждается лишь функция ZwCreateSection . Нужно заменить Section на дескриптор любого другого объекта отображаемого на память. Теоретически это можно сделать при помощи MapViewOfFile указав в качестве смещения позицию ресурса в исходном экзе файле. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.