AppInit_DLL

Тема в разделе "WASM.BEGINNERS", создана пользователем ltshck, 21 апр 2008.

  1. ltshck

    ltshck New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    195
    написал Dll, через запятую добавил в список appinit_dll
    ребутнулся

    смотрю список длл у _любой_ проги - моей нету.

    путь аказан верно.

    действие длл:

    BOOL APIENTRY DllMain() {

    return true;
    }

    пробовал также

    BOOL APIENTRY DllMain() {

    WinExec("C:\\windows\\calc.exe",SW_SHOW);

    return true;
    }



    также не пашет. че за фигня?
     
  2. zoool

    zoool New Member

    Публикаций:
    0
    Регистрация:
    1 дек 2007
    Сообщения:
    412
    твоя либа неправильно загружается

    ret
    вместо
    retn 12

    Параметры кто указывать будет?
     
  3. ltshck

    ltshck New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    195
    спасибо. сто пудов. хотя редирект entry point в exe-шнике работает.
    не знал что в длл не пашет.

    а как узнать какой .exe подгружает оную dll?
     
  4. _Chen_

    _Chen_ New Member

    Публикаций:
    0
    Регистрация:
    20 апр 2008
    Сообщения:
    2
    1 способ: GetModuleFileName(0, &Buffer, buffer_size)
    2 способ: GetCurrentProcessId()
    3 способ: пропарсить PEB

    ЗЫ: твоя либа намертво повесит систему.
    Смотри
    Если она в апп_инит, то твоя либа загружается во все новые процессы, в которых грузится user32.dll
    Твоя либа запускает калк.ехе
    Калк.ехе подгружает твою либу которая вновь запускает новую копию калк.ехе

    Используй мутексы или другие средства синхронизации

    Например
    Код (Text):
    1. if (!OpenMutex(MUTEX_ALL_ACCESS,0, "OurWasmMutex" ))
    2. {
    3.    CreateMutex(0,0,"OurWasmMutex");
    4.    ...
    5.    \\тут твой код
    6.    ...
    7. }
    8. return 1;
     
  5. ltshck

    ltshck New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    195
    ога. спасибо.
    тока система не виснет а либу просто выкидывает, хотя она пытается грузиться.
     
  6. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows: AppInit_DLLs

    Пробелов в пути к файлу быть не должно - пробел (как и запятая, надо же) используется в качестве разделителя. Так что надо использовать короткие пути без кавычек. Ещё Рихтер писал, что используется только путь к первой dll, остальные игнорируются - это не так как минимум с XP SP2 (т.е. теперь используются пути ко всем dll).

    После изменения этого параметра перезагружаться не обязательно.

    У DllMain, как отметил zoool, больше нуля параметров. Их три.

    Алсо, калькулятор обычно находится в каталоге system32 ;)


    Если это действительно так и дело не в пробелах в пути к dll, то попробуй вызвать LoadLibrary с именем своей dll внутри DllMain,..
     
  7. ltshck

    ltshck New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2007
    Сообщения:
    195
    кому интересно, было вот что:
    с целью уменьшения размера либа компилилась как /ALIGN:16 ....

    c exe катит а вот dll не захотлеась грузиться...

    убрал нах выравнивание - все заработало