Загрузка плагинов в память через Инет

Тема в разделе "WASM.NETWORKS", создана пользователем gershkovich, 9 окт 2006.

  1. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Привет всем!

    Я задумал реализовать для своего приложения подгрузку
    плагинов через Инет таким вот образом:
    1. приложение скачивает с моего сайта плагин
    2. размещает его в памяти
    3. ну и передает туда управление

    Скачать из Инета данные и использовать их как данные - не вопрос.

    Затык в том, что я хочу скачивать исполняемый код и запускать его
    Поцкажите пжл как это сделать ??
    Заранее спасибо.

    ЗЫ Можно конечно записать этот код на диск как DLL и использовать его как DLL,
    но я не хочу ничего оставлять на диске
    Кроме того, скачать DLL может и юзер через браузер :)
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    gershkovich
    Пиши плагины на PIC и запускай в памяти. Или смотри соседнюю тему по загрузке dll.
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Размещай в памяти: VirtualAlloc, потом меняй атрибуты страниц VirtualProtect на PAGE_EXECUTE.
    Передавай управления на твой код.
     
  4. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    IceStudent
    А что такое PIC ? Гугл выдает ссылки на какие-то
    микроконтроллеры и микрочипы

    n0name
    Насколько я понял делать надо так :
    1. Выделяем память VirtualAlloc
    2. Меняем атрибут посредством VirtualProtect
    3. делаем jump to

    Как в таком случае быть с регистрами стэка ?
    Можно оставить как есть ?

    И еще вопрос VirtualProtect в качестве параметра
    требует "A pointer to the base address of the region of pages"

    Как получить этот адрес из адреса который
    возвращается ф-цией VirtualAlloc ? Или это и есть base address ?

    Заранее спасибо.
     
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    типа того. Но лучше всё таки call.
    А чё с ними не так?
    Так и есть.
     
  6. gershkovich

    gershkovich New Member

    Публикаций:
    0
    Регистрация:
    14 фев 2006
    Сообщения:
    97
    Гы, Шутку юмора понял :)

    ок
    спасибо!
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    gershkovich
    position independent code, чтоб не обрабатывать релоки.
     
  8. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    http://wasm.ru/article.php?article=memfile

    я бы по образу и подобию dll запустил.
    Можно как вариант, upx немного изменить так чтобы шифровал файлы, а распаковщик ключ командной получал или через какой-нибудь именованый pipe. Ну можно ещё криптографию какую-нибудь придумать что ключ для каждого файла свой был или чтоб его не сперли. Тут дофига места чтоб пофантазировать....