Ты будто специально берешь одно слово из поста и докапываешься до него, не разбираясь к чему это относилось. Длл хороша тем, что винда ее инициализирует сама. Написать базонезависимый код, который сам возьмет базу kernel32.dll/kernelbase.dll и размотает импорт, чуть хлопотней, чем сделать длл, импорт которой заполнит сама винда. Если эта возможность не используется, длл это больший геморрой и у нее нет ни одного преимущества.
не ссорьтесь, в двух словах - после датадиректорий, которых 16, идут заголовки секций, которых NumberOfSections из FileHeader, они то и грузятся/создаются. а вот оверлей потому и не грузится,- его просто надо в размер секции последней добавить и sizeofimage поправить. а насчёт длл может и да, я по другому пилил - запускался, мапил себя в себя и в цель, и относительно удалённой базы просто на своём вьюве релоки пересчитывал, вот тащемта и всё. единственно ещё есть нюансы с инитом ртл и ++ - там пришлось руками допилить, какаято хрень со статическими конструкторами была (это всё в сорцах ртл студийных есмь), не помню но и никаких длл не надо.
sn0w, там "целевой процесс сам разворачивает функционал дллки как только она окажется в адресном пространстве". То, что ты сейчас сказал, для него эльфийский язык. Так что либо большая красная кнопка "сделать хорошо" нужна, либо "не очень-то и хотелось". Для чего можно захотеть загружать длл из памяти? Либо из эстетических соображений, либо в попытке ее защитить от безумных копирователей. Инсталляторы даже очень приличных программ выгружают все что надо на диск и никакой эстетикой не заморачиваются, защита от копирования таким способом заставит крякера разве что ржать до икоты.