Привет Как в настройках проекта VS2005 задать FILE_ALIGN ? Опция линкера /ALIGN:0x1000 устанавливает SECTION_ALIGN А мне нужно сделать так, чтобы секции физически были выровнены на 4кб. Где это можно сделать? Каким ключом?
это вообще говоря бессмысленная задача, то есть имеет смысл лишь выравнивание в памяти... поэтому она видимо не предусмотрена... можешь сам программу написать и поставить в пост-билд ивент... можешь канеш на мсдн в линкер оптионс поискать... но чет я очень сомневаюсь насчет этой задачи...
dyn в смысле физически ??? в файле что-ли ??? для исполняемых файлов это бред -- загрузчику все равно откуда из файла ему главное куда (с какого адреса памяти)
Физически. В файле. Нужно для того, чтобы не нужно было размещать секции в памяти вручную (убрать лишний код). Во всех секциях PhysicalSize > VirtualSize. Поэтому смысл есть. Ну и интересно, реально ли где-то в настройках изменить FileAlignment Судя по всему нет, т.к. в интернете нигде нет об этом упоминания.
Для выравнивания именно на границу страницы в VS2008 и раньше есть ключ линковщика /opt:win98. В VS2010 его убрали.
dyn я все равно не понимаю смысл твоей затеи - допустим ты прикручиваешь к своей программе нестандартный дос стуб - соответственно в заголовке прописываются новые значения начала бинарного образа от начала файла - а твой образ как грузился по адресу (ну допустим image_base) так и грузится
Rockphorr Обобщу и упрощу задачу. Нужно в свое АП вручную загрузить длл, которая хранится в ресурсах. В длл виртуальный размер всех секций равен физическому. Чтобы не заморачиваться с размещением секций в памяти, делаем FILE_ALIGN == SECTIONS_ALIGN Тогда физическое смещение секции равно виртуальному. И двигать секции не нужно, тем самым убираем лишний код. Думаю, теперь понятно?
ого... запомним... это странно... во-первых, выравнивание по секциям - это наверное наименьшая часть из работы PE-загрузщика, настройка релоков и таблицы импорта выглядит помассивнее... во-вторых, в плане размера вы проигрываете больше в размере выходной DLL, чем выигрываете в размере кода, всетки выравнивание одной секции на 4кб - это как то жестко... в-третьих, по хорошему вам все равно придется настраивать права доступа к страницам секций, исходя из атрибут секций, можно канеш этого не делать, поставив всем страницам PAGE_EXECUTE_READWRITE, но это не красиво... ЗЫ кстати по последним вашим темам и вопросам на форуме можно с 90% вероятности сказать, что вы занялись написанием малвари... дедуктивный метод так сказать)))