Как заставить DLL выгрузить саму себя?

Тема в разделе "WASM.BEGINNERS", создана пользователем assorted, 3 окт 2006.

  1. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Как заставить DLL выгрузить саму себя?


    Для EXE - нашел следующий код

    lea eax, buf
    push 0
    push 0
    push eax
    push ExitProcess
    push module
    push DeleteFile
    push UnmapViewOfFile
    ret
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    FreeLibraryAndExitThread.
     
  4. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    The FreeLibraryAndExitThread

    То что нужно!
     
  5. koderr

    koderr New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    205
    Жаль, под XP не работает.
     
  6. assorted

    assorted New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    227
    Как не работает?

    вот полный код, правда на сях

    include <windows.h>

    int main(int argc, char *argv[])
    {
    char buf[MAX_PATH];
    HMODULE module;

    module = GetModuleHandle(0);
    GetModuleFileName(module, buf, MAX_PATH);
    CloseHandle((HANDLE)4);

    __asm
    {
    lea eax, buf
    push 0
    push 0
    push eax
    push ExitProcess
    push module
    push DeleteFile
    push UnmapViewOfFile
    ret
    }

    return 0;
    }
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    http://www.catch22.net/tuts/selfdel.asp
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    assorted
    А вот так. Не работает, и всё. В ХР секция не имеет предопределённого хэндла (4), как было в 2k.