Конференция "Прочее" » Совместный EXE и DLL файл.
 
  • DayGaykin © (25.01.17 17:45) [0]
    Подскажите, как сделать такой exe, файл который может быть запущен и как exe, и присоединен как dll?
    Причем как dll он должен только выполнить DllMain и всё. Экспорт не нужен.
  • dmk © (25.01.17 19:39) [1]
    exe с параметрами в командной строке.
  • DayGaykin © (25.01.17 20:25) [2]

    > dmk ©   (25.01.17 19:39) [1]

    Основная проблема в том, что нельзя указать DllMain, если компилируешь "program", а не "library".
  • Dimka Maslov © (25.01.17 23:42) [3]
    А если скомпилировать пустой экзешник, загрузить его аки библиотеку и по значениям системных переменных определить, что запуск файла как экзешника отличается от загрузки как библиотеки?
  • Игорь Шевченко © (26.01.17 10:29) [4]
    Никак
  • Rouse_ © (26.01.17 11:20) [5]
    Dllmain  - это ЕР, она у РЕ образа может быть только одна.
  • Rouse_ © (26.01.17 11:22) [6]
    Единственно ты можешь на точке входа определить что мы есть рут и передать управление не на инициализацию приложения, а на свою собственную dllmain, кастомную, ессесно
  • DayGaykin © (26.01.17 11:26) [7]

    > Игорь Шевченко ©   (26.01.17 10:29) [4]
    > Никак

    Я так и понял.


    > Rouse_ ©   (26.01.17 11:20) [5]
    > Dllmain  - это ЕР, она у РЕ образа может быть только одна.

    и для LoadLibrary('....exe') она не вызывается (как и инициализация импорта).

    Поэтому я решил пойти по простому пути, сделаю просто запуск через rundll32.
  • Rouse_ © (26.01.17 11:42) [8]
    не ну дернуть то можно и без загрузчика:

    procedure CallEP(Instance: NativeUInt);
    var
     DOSHeader: PImageDosHeader;
     NTHeader: PImageNtHeaders;
    begin
     DOSHeader := PImageDosHeader(Instance);
     NTHeader := PImageNtHeaders(ULONG_PTR(DOSHeader) + ULONG_PTR(DOSHeader^._lfanew));
     TDllProc(NTHeader^.OptionalHeader.AddressOfEntryPoint + Instance)(0);
    end;

    begin
     CallEP(LoadLibrary('dll.exe'));


    другое дело что этот образ нужно правильно проинициализировать.
 
Конференция "Прочее" » Совместный EXE и DLL файл.
Есть новые Нет новых   [134431   +10][b:0][p:0]