exe & dll одновременно

Тема в разделе "WASM.ASSEMBLER", создана пользователем Android, 10 фев 2006.

  1. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Bill_Prisoner



    А какие с проблемы с импортируемыми "dll" функциями?

    Мой пример работает на 98SE, 2K и XPSP2.
     
  2. Android

    Android New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    183
    Адрес:
    Ukraine
    Спасибо за ответы и примеры
     
  3. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    S_T_A_S_

    Я не про ОС. А про то, что ты вызываешь MessageBox из DLL(EXE). MessageBox находиться в user32.dll. А user32.dll есть уже в АП процесса, которая загружает DLL. Если бы ее так не было, то адрес MessageBox не заполнился бы загрузиком.
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Гм. Ну конечно же user32.dll есть в адресном пространстве. Она импортируется из hello.exe (которая "dll"). hello.exe статически прилинкована к helloclient.exe (которая не импортирует user32.dll). Поэтому загрузчик и резолвит импорт, остаётся только исправить релоки - вот это единственная проблема, основной exe должен обязательно вызвать fixup.



    А если нужна динамическиая загрузака dll - тогда совсем непонятно, откуда проблемы надуманы - ну будешь далать не один LoadLibrary, а 2, добавить ещё код для резолва импортов... зато так можно будет и не только PE файлы загружать, но какие хошь %)
     
  5. khv_test

    khv_test New Member

    Публикаций:
    0
    Регистрация:
    30 июн 2004
    Сообщения:
    135
    Как я понял основное назначение ЕХЕ&ДЛЛ в том чтоб запустить ДЛЛ кликом.. Для этого можно использовать CPL файлики..

    [​IMG] _936775072__simpler.zip
     
  6. Bill_Prisoner

    Bill_Prisoner New Member

    Публикаций:
    0
    Регистрация:
    4 май 2005
    Сообщения:
    238
    S_T_A_S_

    Все правильно. Просто я понял вопрос так - может dll быть и exe в классическом смысле. Маленькие проблемы с импортом и релоками не дают этой dll называться настоящей - т.е. нормальные DLL с флагом. Естесстевенно если эти недочеты убрать, то exe может быть и dll.
     
  7. MrMadguy

    MrMadguy New Member

    Публикаций:
    0
    Регистрация:
    11 мар 2006
    Сообщения:
    19
    Адрес:
    Russia
    Попробуй следующий вариант:

    1)Загрузи DLL.EXE с помощью CreateProcess или WinExec

    2)Получи его hModule с помощью GetModuleHandle("DLL.EXE")-это та-же величина что возвращает LoadLibrary

    3)Получи процедуру через GetProcAddress и спокойно запускай

    4)Выгрузить DLL.EXE с помощью TerminateProcess

    Этот способ позволяет не только запускать чужие функции,но и тырить ресурсы с помощью LoadResurse из любого(!!!) в данный момент запущенного приложения.
     
  8. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Этот способ точно рабочий?