Упаковщик DLL. Проблема с настройкой импорта

Тема в разделе "WASM.WIN32", создана пользователем psu, 5 сен 2007.

  1. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    psu
    Я тебе уже написал. У тебя конец последней секции вылазит за пределы файла. Поставь там 189 вместо 200. И dll начнёт грузиться. Правда у тебя ещё и импорт не правильный - имя у GetProcAddress не полностью написано и -> не грузится. переделай и будет грузиться нормально.
     
  2. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    psu
    Точно, не слушай меня, asd дело говорит. Я сегодня неадекватен ;)
     
  3. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    asd
    Вот скриншоты со структурой длл, которую показывает PEView. На 3.jpg обвел рамкой RawOffset и RawSize последней секции. Имя GetProcAddress показывает полностью. Кто-то из нас неправ..
     
  4. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    psu
    скринов не вижу. тут(ибо аттачи глючат) http://www.speedyshare.com/285497831.html 2_1.dll - то что я из твоего аттача достал. 2.dll - кое как работающий вариант, руками переделаный.
     
  5. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    Размер архива, наверное, недопустим (150к)..
    сдесь скрины
    http://primeupload.com/file/131303/screens.rar.html

    ---
    asd
    Размер твоих файлов 2953. Мой 3072. Глючит аттач наверное
    http://primeupload.com/file/131304/2.rar.html
     
  6. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    Выяснилось вот что: в тестовой проге я вызываю только LoadLibrary( 2.dll ). Если перед этим добавить вызов LoadLibrary( user32 ), то все работает ( то есть вижу окошки сообщений ). Вот почему в олли не могу отловить ошибку. Она со старта грузит user32.dll
     
  7. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    УРА!
    нашел
    рассказываю, если кому интересно :)

    В моей функции настройки импорта есть такой код
    Код (Text):
    1. if( !GetModuleHandle( user32 )
    2. LoadLibrary( user32 )
    Если GetModuelHanlde возвращал 0, то LoadLibrary должна была загружать, но не тут то было. Полез внутрь LoadLibrary дошел до вызова по адресу ntdll.7с91606с вызова ntdll.7с915c3f
    И она зараза вернула подозрительную ошибку 80000002 ( STATUS_DATATYPE_MISALIGNMENT )
    погуглил пару секунд, нашел тему http://www.wasm.ru/forum/viewtopic.php?pid=157882
    После этого уже чисто интуитивно удалил из DllMain пару pushf/popf между которыми и вызывалась LoadLibrary. Все заработало, блин.. :)
     
  8. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    psu pushfd/popfd ставь
     
  9. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    asd
    думаю, они там вообще не нужны. Спасибо
     
  10. psu

    psu New Member

    Публикаций:
    0
    Регистрация:
    12 июл 2006
    Сообщения:
    198
    Практически закончил упаковщик, но снова вылезла проблема. Тестирую на двух дллках: первая та же ( пример из масма ), вторая реализует COM ( в тесте не используется ). Распакова проходит "нормально" ( то есть ничего не падает, DllMain вызывается, отрабатывает, возвращает управление программе ). Но на второй дллке после LoadLibrary олли кричит "Bad or unknown format of 32-bit executable file". В дампе секции не показываются, только адрес начала модуля. Последующие вызовы GetProcAddress возвращают правильные адреса функций, вызовы функции срабатывают без ошибок. В общем все нормально, кроме "bad or unknown format"
    Здесь http://primeupload.com/file/132166/Packer.rar.html архив с тестовой длл-кой номер ( оригинал и упакованная ) и тестовая прога. Гляньте плз, а то у меня уже та стадия, когда смотришь на код и думаешь "ну блин, все же правильно, че ж оно не работает!"