psu Я тебе уже написал. У тебя конец последней секции вылазит за пределы файла. Поставь там 189 вместо 200. И dll начнёт грузиться. Правда у тебя ещё и импорт не правильный - имя у GetProcAddress не полностью написано и -> не грузится. переделай и будет грузиться нормально.
asd Вот скриншоты со структурой длл, которую показывает PEView. На 3.jpg обвел рамкой RawOffset и RawSize последней секции. Имя GetProcAddress показывает полностью. Кто-то из нас неправ..
psu скринов не вижу. тут(ибо аттачи глючат) http://www.speedyshare.com/285497831.html 2_1.dll - то что я из твоего аттача достал. 2.dll - кое как работающий вариант, руками переделаный.
Размер архива, наверное, недопустим (150к).. сдесь скрины http://primeupload.com/file/131303/screens.rar.html --- asd Размер твоих файлов 2953. Мой 3072. Глючит аттач наверное http://primeupload.com/file/131304/2.rar.html
Выяснилось вот что: в тестовой проге я вызываю только LoadLibrary( 2.dll ). Если перед этим добавить вызов LoadLibrary( user32 ), то все работает ( то есть вижу окошки сообщений ). Вот почему в олли не могу отловить ошибку. Она со старта грузит user32.dll
УРА! нашел рассказываю, если кому интересно В моей функции настройки импорта есть такой код Код (Text): if( !GetModuleHandle( user32 ) 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. Все заработало, блин..
Практически закончил упаковщик, но снова вылезла проблема. Тестирую на двух дллках: первая та же ( пример из масма ), вторая реализует 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 архив с тестовой длл-кой номер ( оригинал и упакованная ) и тестовая прога. Гляньте плз, а то у меня уже та стадия, когда смотришь на код и думаешь "ну блин, все же правильно, че ж оно не работает!"