Настройка экспорта в пакуемой dll

Тема в разделе "WASM.WIN32", создана пользователем FedorShika, 20 сен 2010.

  1. FedorShika

    FedorShika New Member

    Публикаций:
    0
    Регистрация:
    4 ноя 2009
    Сообщения:
    11
    Здравствуйте.
    Пытаюсь упаковать dll.
    Если использовать явное связывание (через LoadLibrary и GetProcAddress), то всё ОК.
    А вот если использовать неявное связывание (через директорию импорта), то при загрузке dll вылетает ошибка.
    Т.е. код моего стуба нормально отрабатывает:
    Я выстраиваю пакуемую dll, настраиваю её импорт, фиксю LDR_MODULE ImageBase, EntryPoint, SizeOfImage.
    Когда пытаюсь вызвать EntryPoint выстроенной dll, то два раза появляется сообщение "The application failed to initialize properly (0xc00000fd)".
    После чего появляется сообщение "Unhandled exception at 0x7c96478e (ntdll.dll) 0xC00000FD: Stack overflow.

    Да, забыл сказать, когда добавляю в стуб директорию экспорта (идентичную той, что есть в пакуемой dll), то в таблице адресов пробовал писать и оригинальный адрес, и адрес + разница между imageBase стуба и imageBase выстраиваемой dll.
    Не помогает.

    Пробовал из стуба dll править адреса в таблице импорта exe, что бы они указывали на функции выстроенной библиотеки.
    Не помогает.

    Снова повторюсь, если этой dll нет в зависимостях exe, и загружать её руками (через LoadLibrary) то всё ок.
    А вот если она есть в зависимостях, то при передаче управления в её EntryPoint переполняется стек.

    Дебагать в OllyDbg пробовал, но там столько вызовов, что я потерялся.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Вверху два топика прикреплено. Изучать.