Windows Server 2008 – BCD and BCDEdit
Boot.ini really was the last of Microsoft’s .ini files. In Windows Server 2008, Boot.ini is superseded by BCD (Boot configuration data). Boot Configuration Data is a wonderfully descriptive expression, more importantly, it gives you control of what should happen when a Windows Server 2008 computer starts. The BCD editor is not notepad, but a command-line program called BCDEDIT.
Topics for Windows Server 2008 – BCD and BCDEdit
- Difficulty Getting Started with BCDEdit
- Example 1 – Plain bcdedit
- Example 2 – Collect information about the switches
- Example 3 – Edit BCD Settings
- Well-known GUIDs for BCDEdit
- Windows 8 BCDEdit
♦
Difficulty Getting Started with BCDEdit
At the beginning I found it frustrating when I tried to set, or even change boot settings with BCDEdit. My aim on this page is to provide you with strategies and detailed examples, as a result, you will soon learn how to editor the menu which appears when Windows Server 2008 boots. Incidentally, the same techniques work with Vista.
Scenario: We want to inspect, and then change the Windows Server 2008’s boot options. For example, reduce the timeout, or display an option to boot into a second operating system on a dual-boot machine.
Example 1 – Plain bcdedit
Trap: Before launching the command prompt, right-click CMD and select, RunAs, administrator.
Let us get started with plain:
bcdedit
Here is the BCD code
Windows Boot Manager
——————–
identifier {bootmgr}
device partition=C:
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {default}
displayorder {current}
{3b1cb4c9-5398-11dd-88aa-a0b620d5ce11}
toolsdisplayorder {memdiag}
timeout 7
Windows Boot Loader
——————-
identifier {current}
device partition=C:
path \Windows\system32\winload.exe
description Microsoft Windows Server 2008
locale en-US
inherit {bootloadersettings}
osdevice partition=C:
systemroot \Windows
resumeobject {default}
nx OptOut
Windows Boot Loader
——————-
identifier {3b1cb4c9-5398-11dd-88aa-a0b620d5ce11}
device partition=D:
path \Windows\system32\winload.exe
description Microsoft Windows Vista
locale en-US
inherit {bootloadersettings}
osdevice partition=D:
systemroot \Windows
resumeobject {3b1cb4ca-5398-11dd-88aa-a0b620d5ce11}
nx OptIn
Note 1: Observe three sections of BCD code, one for the boot manager itself, followed by sections for the operating systems, in this instance Windows Server 2008 and Vista.
Note 2: You could also append the verbose switch /v. The advantage is that you can now see the GUID of the default identifier.
See more on Windows 8 boot loader.
Guy Recommends: A Free Trial of the Network Performance Monitor (NPM) v12
SolarWinds’ Network Performance Monitor will help you discover what’s happening on your network. This utility will also guide you through troubleshooting; the dashboard will indicate whether the root cause is a broken link, faulty equipment or resource overload.
Perhaps the NPM’s best feature is the way it suggests solutions to network problems. Its second best feature is the ability to monitor the health of individual VMware virtual machines. If you are interested in troubleshooting, and creating network maps, then I recommend that you give this Network Performance Monitor a try.
Download your free trial of SolarWinds Network Performance Monitor.
Example 2 – Collect information about the switches
Making changes to BCD code is possible, but beware, your mind has to adjust to its logic and moreover, the syntax is tricky particularly with the hex code. The biggest problem at the outset is to sift the important commands from a long list.
Let us ask for help identifying bcdedit’s switches, we can try the famous switch /?
bcdedit /?
Here is an excerpt:
BCDEDIT – Boot Configuration Data Store Editor
Commands that control the boot manager
===================================
/bootsequence Sets the one-time boot sequence
/default Sets the default entry to boot.
/displayorder Sets the order in the multiboot menu.
/timeout Sets the boot manager time-out value.
Note 1: Try bcdedit /? TOPICS
Example 3 – How to Edit BCD Settings
- bcdedit /timeout
- bcdedit /default
- bcdedit /displayorder
- bcdedit /set
- bcdedit /bootsequence
- MSConfig Windows 8
bcdedit /timeout
I would like to start with /timeout, because it’s the easiest change to understand and to monitor.
Here is an easy change:
bcdedit /timeout 7
To see the effect, re-run this plain command: bcdedit
bcdedit /default
Here is the classic switch to control what happens after the timeout expires.
bcdedit /default {GUID}
bcdedit /default {3b1cb4c9-5398-11dd-88aa-a0b620d5ce11}
Note 1: In the above example setting the /default in this way changes the bcd code, as a result my computer now boots into Vista. Just to remind you that tweaking the default GUID only makes sense if you have a multi-boot machine.
bcdedit /displayorder
The key point with /displayorder is that you can only use particular GUIDs, furthermore, they must be encased in curly brackets. The knack is to research for GUIDs in sections starting with:
Windows Boot Loader
——————-
identifier {3b1cb4c9-5398-11dd-88aa-a0b620d5ce11}
Tip: To save typos you can ‘Mark’, ‘Copy’ and ‘Paste’ these hex blocks at the command-line. Click on the tiny icon at the top left of your cmd box, then select ‘Edit ->’
Trap: The GUIDs must exist, you cannot just make them up. Moreover they must correspond to real settings as indicated under ‘identifier’.
Example 1:
bcdedit /displayorder generic syntax {GUID-os1} {GUID-os2}
bcdedit /displayorder {current} {3b1cb4c9-5398-11dd-88aa-a0b620d5ce11}
Example 2:
bcdedit /displayorder {3b1cb4c9-5398-11dd-88aa-a0b620d5ce11} {9f25ee7a-e7b7-11db-94b5-f7e662935912}
I say again, you must use your GUIDs, and not mine; test by re-running the command: bcdedit. The key point is to synchronize with the rhythm of the syntax,
/displayorder space curly bracket os1 curly bracket space curly bracket os2 curly bracket.
bcdedit /set
It is possible to make cosmetic changes to the descriptions that appear alongside the operating systems on the boot menu.
Example 1
bcdedit /set {50487680-538e-11dd-9786-b25b83bcddca} description «Longhorn»
bcdedit /bootsequence
At present I have no use for this bootsequence switch, however, I did once see its effect when bootmgr asked me if I wished to roll-back an update I was about to make.
Guy Recommends: SolarWinds Network Topology Mapper (NTM)
NTM will produce a neat diagram of your network topology. But that’s just the start;Network Topology Mapper can create an inventory of the hardware and software of your machines and network devices. Other neat features include dynamic update for when you add new devices to your network. I also love the ability to export the diagrams to Microsoft Visio.
Finally, Guy bets that if you test drive the Network Topology Mapper then you will find a device on your network that you had forgotten about, or someone else installed without you realizing!
Download your 14 day free trial ofSolarWinds Network Topology Mapper
well-known GUIDs for BCDEdit
Apparently, these GUIDs are well-known to the bootmgr, although this bcd code is not well-known by me!
{5048767f-538e-11dd-9786-b25b83bcddca} (Meaning Windows Server 2008)
{3b1cb4c9-5398-11dd-88aa-a0b620d5ce11} (Meaning BCD for Vista)
{cbd971bf-b7b8-4885-951a-fa03044f5d71} (Another Vista GUID)
{466f5a88-0af2-4f76-9038-095b170dc21c} (Meaning BCD XP)
Further Information
On this page I have concentrated on amending the Windows Server 2008 boot menu on a dual boot machine. BCDEdit has more wide ranging capabilities, in particular ‘/copy’ for creating more Windows Boot Loader sections. While that may be useful for preparing imaging software, there is no point in complicating matters on a regular server by creating references to non-existent operating systems.
My scenario deals with cases where you have installed two or more operating systems on the same computer and now you need to control or troubleshoot what happens when the machine boots. Such control was formerly the province of boot.ini.
See more about dual booting with Windows 8 »
»
Summary of BCDEdit
If you are wondering how to control the boot menu that you see in Windows Server 2008 or Vista, then investigate the command-line bcdedit. There are switches to control the timeout and the display order for multi-boot machines.
If you like this page then please share it with your friends
Microsoft Windows Server 2008 Topics:
• Server 2008 Home • Overview • What’s New? • Migration Advice • Install • SP1 Review
• AD DC • Roles • Features • Editions • Hyper-V • UAC • IPv6 • Group Policy • Free NPM Trial
Атаки, основанные на переполнении буфера, долгое время вызывали множество проблем и до сих пор являются одной из главных задач обеспечения безопасности в компьютерной индустрии. Первой атакой, основанной на переполнении буфера и распространяемой через Internet, стал червь Morris, нанесший серьезный ущерб в 1988 году.
Атаки, основанные на переполнении буфера, долгое время вызывали множество проблем и до сих пор являются одной из главных задач обеспечения безопасности в компьютерной индустрии. Первой атакой, основанной на переполнении буфера и распространяемой через Internet, стал червь Morris, нанесший серьезный ущерб в 1988 году. Особенно досадно, что создатели червя написали его из благих побуждений, а именно — для измерения масштабов Internet. Червь Morris взламывал несложные пароли и использовал известные уязвимые места программ для UNIX-платформ, таких как sendmail и Finger. Последние известные атаки, использующие переполнение буфера, черви CodeRed и SQL Slammer, перевели множество подключенных к Internet систем под управление хакеров. В 2001 году червь CodeRed взломал с помощью переполнения буфера сервер Microsoft Internet Information Services (IIS) 5.0 (версию Web-сервера IIS, поставляемую с системой Windows 2000), а в 2003 году червь SQL Slammer с помощью переполнения буфера проник на системы с установленным сервером баз данных Microsoft SQL Server 2000.
Можно противостоять атакам, использующим переполнение буфера, с помощью защитных механизмов, добавленных компанией Microsoft в системы Windows Vista и Windows Server 2008: Data Execution Prevention (DEP) и Address Space Layout Randomization (ASLR). Далее я объясню, почему эти механизмы так важны, и покажу, как выполняется их настройка и мониторинг.
Механизм переполнения буфера
Прежде чем более подробно рассматривать защитные механизмы систем Vista и Server 2008, стоит разобраться в процессе переполнения буфера и в том, каким рискам он подвергает ваши системы и данные.
Переполнение буфера возникает, когда вредоносная или просто плохо составленная программа сохраняет данные в память компьютера, превышая фиксированный размер буфера для данных. В результате такого переполнения данные перезаписывают соседние фрагменты памяти. Перезаписываемые данные могут содержать другие буферы, переменные, программную логику, которые искажают выходные результаты или приводят к аварийному завершению процесса. Еще большую угрозу представляют случаи, когда внедряемые данные содержат исполняемый код, который в итоге вынуждена выполнить атакованная программа. Этот код часто содержит основные механизмы атак, использующих переполнение буфера. Он используется для кражи или удаления данных, инициации отказов служб на основе состояния Denial of Service (DoS), изменения привилегий или распространения вредоносных программ на другие системы.
На рисунке приведен простой пример переполнения буфера. Программа определяет две переменные, которые сохраняются в соседних фрагментах памяти. Первая переменная — строка X длиной в 8 байт, вторая — целое число Y, размером 2 байт. Изначально строка X содержит только символы «0», а переменная Y — число 30. Представьте, что пользователь (случайно или умышленно) вводит строку OVERFLOW в эту программу. Программа пытается сохранить эту строку в память по адресу переменной Х и в конце записывает символ «0», чтобы обозначить конец строки. Алгоритм программы не проверяет длину строки и частично перезаписывает значение переменной Y. В результате, хотя программист не собирался менять значение Y, при вводе данных в переменную X значение переменной Y меняется с 30 на число, определяемое символом из строки, записываемой в память по адресу переменной X.
Разработчики могут избежать переполнения буфера, включив в код программы необходимые проверки на ограничения или применяя компиляторы и службы, работающие с активными процессами, для выполнения таких проверок. Проверки ограничений отслеживают объем вводимых данных. Хотя проверки ограничений и соответствующие принудительные меры доказали свою эффективность, множество существующих программ не содержат алгоритмов проверки ограничений. Кроме того, лучшие методики бесполезны, если некоторые программисты не следуют им.
Это объясняет, почему многие разработчики аппаратных средств, приложений и операционных системы, в том числе Microsoft, разработали проактивные механизмы защиты, которые пытаются предотвратить развитие атак на основе переполнения буфера в некорректно написанном коде. Давайте познакомимся с механизмами DEP и ASLR, разработанными компанией Microsoft.
Защита исполняемых данных
Как упоминалось выше, атаки, основанные на переполнении буфера, часто прописывают вредоносный исполняемый код в буферы памяти других приложений, после чего вынуждают приложения выполнять разрушающие систему действия. Вы можете прервать исполнение внедренного кода с помощью технологии DEP. Она позволяет системе Windows помечать те сегменты памяти, которые должны только хранить данные, как «неисполняемые» (NX). Если приложение пытается выполнить код из сегмента памяти с меткой NX, механизм DEP запретит это действие.
Обратная сторона медали при использовании механизма защиты от переполнений буфера DEP состоит в том, что блокировка приложения приводит к его аварийной остановке. Другими словами, хотя DEP не дает приложению исполнить вредоносный код, данная ситуация предоставляет хакерам возможность выполнить атаки, реализующие отказ в обслуживании, DoS.
Компания Microsoft добавила поддержку DEP не только в системы Vista и Server 2008, но и в пакеты Windows XP SP2, Windows Server 2003 SP1 и Windows 2003 R2. Механизм DEP реализован компанией Microsoft в двух вариантах: аппаратном и программном.
Аппаратная реализация службы DEP. Аппаратная реализация DEP использует функцию процессора, которую в AMD называют защитой неисполняемых страниц (NX), а в Intel — использованием запрещающего бита (XD). На момент написания статьи компания AMD поддерживает функцию NX только в 64-разрядных процессорах, а Intel поддерживает функцию XD только в модельном ряду 64-разрядных машин Itanium и EM64 T, а также в некоторых 32-разрядных моделях процессоров Prescott. Компания Microsoft — не единственный поставщик операционных систем, применяющий процессорные функции NX и XD для защиты от переполнения буфера: программное обеспечение, использующее функции NX и XD, поддерживается и в других операционных системах, таких как Linux и UNIX BSD (дополнительную информацию можно найти по адресу en.wikipedia.org/wiki/Nx-bit).
Программная реализация службы DEP. Программная реализация DEP позволяет компании Microsoft предоставлять данную технологию пользователям 32-разрядных систем, не оборудованных процессором с функциями NX или XD. При использовании данного продукта возможности процессорных функций NX и XD реализуются с помощью множества специальных указателей, автоматически добавляемых операционной системой Windows для объектов, хранящихся в системной памяти.
Поддерживает ли ваша система аппаратную реализацию службы DEP, легко проверить, просмотрев настройки DEP. Чтобы просмотреть эти настройки, щелкните на ярлыке Advanced Settings в окне System панели управления Control Panel и выберите в открывшемся окне Advanced and Performance Settings.
В нижней части окна настроек конфигурации службы DEP указан тип реализации данной службы, поддерживаемый вашей системой. На экране 1 отображено окно настроек DEP в системе Vista. Об остальных параметрах конфигурации я расскажу далее. Внизу экрана читаем: Your computer’s processor supports hardware-based DEP.
Если ваша система поддерживает программную реализацию службы DEP (т. е. процессор компьютера не поддерживает функции NX или XD), вы увидите сообщение Your computer’s processor does not support hardware-based DEP. However, Windows can use DEP software to help prevent some types of attacks.
Другой способ проверить, поддерживает ли ваша система аппаратную или программную реализацию службы DEP, — задействовать команды из инструментария Windows Management Instrumentation (WMI). Эта процедура описана в статье Microsoft, опубликованной по адресу support.microsoft.com/kb/912923.
В системах XP SP2, Windows 2003 SP1 и более поздних системах Microsoft технология DEP активирована по умолчанию. Однако механизмы DEP не всегда защищают все программы, работающие в системе. Точный список программ, защищаемых службой DEP, определяется уровнем защиты. Служба DEP поддерживает два уровня защиты:
-
Level 1. Первый уровень защищает только системный и исполняемый код платформы Windows и не распространяет механизм защиты DEP на остальные приложения компании Microsoft или независимых производителей;
-
Level 2. Второй уровень защищает весь исполняемый код в системе. Механизмы DEP применяются и к системному коду Windows, и к приложениям компании или независимых производителей.
По умолчанию системы XP SP2 и Vista запускают службу DEP на первом уровне защиты, системы Windows Server 2003 SP1 и Windows Server 2008 — на втором.
Администраторы могут настраивать уровни защиты посредством конфигурационного экрана службы DEP, показанного на экране 2. В этом примере (изображающем настройку службы DEP «по умолчанию» в системе Vista) механизмы DEP активированы только для важнейших программ и служб системы Windows — первый уровень защиты. Для переключения службы DEP на уровень 2 можно использовать переключатель Turn on DEP for all programs and services except those I select. По умолчанию данный режим устанавливается в системах Windows Server 2003 SP1 и Windows Server 2008.
Второй уровень защиты позволяет освободить определенные приложения от действия защитного механизма DEP. Эта возможность необходима, так как некоторые устаревшие приложения при включенном механизме DEP работают некорректно: например, в момент записи Microsoft Word автоматически освобождается от действия механизма DEP. Перед переключением на второй уровень защиты службы DEP требуется запустить для всех приложений тест совместимости и убедиться, что все приложения при включенном механизме DEP работают корректно. Чтобы освободить одно из приложений от действия DEP, можно добавить исполняемый файл приложения в список исключений на экране настройки с помощью кнопки Add.
Вы можете проверить, защищено ли данное приложение механизмом DEP, просмотрев столбец DEP в приложении Windows Task Manager для процесса, порожденного этим приложением (см. экран 2). Если столбец DEP в системе не отображается, можно добавить его с помощью пункта View, Select Columns службы Task Manager.
Освободить приложения от действия механизма DEP можно и другим способом — создать программную модификацию, распространяемую по вашим системам, которая будет автоматически отключать механизм DEP для выбранных в них приложений. В качестве примера компания Microsoft приводит такую программную модификацию, как слой DisableNX. Для создания этой модификации следует ознакомиться с инструментарием Microsoft Application Compatibility Toolkit (ACT), который, помимо прочего, включает в себя полезную в данном вопросе программу Compatibility Administrator (technet.microsoft.com/en-us/windowsvista/aa905078.aspx). Разработчики приложений могут применить и обратный подход — прописать поддержку механизма DEP в исполняемом коде приложений. Для этого они при компиляции используют параметр/NXCompat.
И наконец, одно немаловажное замечание: если активирован второй уровень защиты механизма DEP, система будет работать немного медленнее, так как все дополнительные проверки проводятся на уровне процессора и системной памяти. Поэтому для систем, не имеющих доступа в Internet, стоит рассмотреть возможность полного отключения механизма DEP. Единственный способ отключить службу DEP в системе — добавить параметр/NoExecute=AlwaysOff в системный файл boot.ini.
Имейте в виду, что вы можете использовать тот же параметр/NoExecute= с другими значениями для активации механизма DEP и установки уровня защиты. В табл. 1 приведены все значения параметра/NoExecute.
Файл boot.ini доступен только в системах XP и Windows 2003, и вы можете редактировать его с помощью приложения Notepad или раздела Startup and Recovery в свойствах системы.
В системах Vista и Server 2008 файл boot.ini заменен на файл Boot Configuration Data (BCD). Для редактирования файла BCD компания Microsoft предоставляет утилиту командной строки bcdedit.exe.
При запуске приложения bcdedit без параметров оно отображает текущую загрузочную конфигурацию. На экране 3 приведен результат действия приложения bcdedit в системе Vista. Обратите внимание на последнюю строку, содержащую конфигурацию механизма NX OptIn. Для перевода механизма NX в состояние «выключен всегда» нужно выполнить следующую команду:
bcdedit/set nx alwaysoff
Значения, приведенные в табл. 1 для параметра/NoExecute= файла boot.ini, также могут быть использованы в параметре nx файла BCD.
Дополнительную информацию о механизме Microsoft DEP и методах его настройки можно найти в статье компании Microsoft по адресу support.microsoft.com/kb/875352/en-us.
Рандомизация размещения адресного пространства
Другой технологией, часто используемой при атаках, построенных на основе переполнения буфера, является внедрение в буфер приложения указателя, ссылающегося на точку размещения важной библиотеки DLL в системной памяти. После этого вирус обманом заставляет программу вызвать данный системный файл, что позволяет ему задействовать службы данной библиотеки без риска быть обнаруженным.
Этот тип атаки относительно легко провести, если операционная система всегда загружает определенные библиотеки в одни и те же сегменты памяти. Например, в системе XP точки размещения системных библиотек не меняются — они незначительно отличаются только в зависимости от установленной версии пакета обновлений. Новая служба ASLR в системах Vista и Server 2008 усложняет использование служб из системных библиотек путем рандомизации точек размещения библиотек DLL в памяти. В отличие от механизма DEP, служба ASLR в ранних версиях Windows недоступна.
Каждый раз при перезапуске систем Windows Vista и Windows Server 2008 служба ASLR случайно привязывает системный код (обычно системные библиотеки DLL и исполняемый код) к определенным точкам в системе. Это означает, что точки начала системного кода (адреса, используемые вирусом для вызова службы) невозможно определить заранее. В системах Windows Vista и Windows Server 2008 библиотеки DLL или исполняемый код могут быть загружены в любой из 256 регистров. Это означает, что хакер имеет шанс 1 к 256 на получение нужного адреса. Служба ASLR также усложняет хакерам процесс написания рекурсивного кода, например червей, целью которого являются идентичные ресурсы на нескольких машинах.
Вы можете увидеть эффект работы механизмов ASLR с помощью службы SysInternals, загрузить которую можно по адресу www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx. Для использования данного средства запустите службу Process Explorer и убедитесь, что в меню View отмечен параметр Show Lower Pane.
После этого выберите процесс explorer.exe в верхнем окне и зафиксируйте базовый адрес библиотеки ntdll.dll в столбце base нижнего окна. Если вы не видите столбец base, то можете добавить его с помощью пункта меню View, Select Columns — столбец Base добавляется из вкладки DLL.
Запишите базовый адрес и перезагрузите компьютер. В системе XP базовый адрес библиотеки ntdll.dll остается неизменным после перезагрузки (система XP не поддерживает технологию ASLR). В системе Vista после перезагрузки базовый адрес меняется (так как система Vista поддерживает технологию ASLR).
На экране 4 изображен интерфейс Process Explorer и базовый адрес библиотеки ntdll.dll. В табл. 2 приведены базовые адреса библиотек ntdll.dll и user32.dll, зафиксированные при запуске Process Explorer в системах XP SP2 и Vista.
Механизм ASLR можно использовать не только для рандомизации точек размещения в памяти системных файлов Windows, но и для рандомизации точек размещения исполняемого кода и библиотек DLL для любых приложений, работающих в системах Vista или Windows Server 2008. Для этого разработчики приложений должны провести компиляцию кода с использованием указателя/dynamicbase. Инструментарий Microsoft Visual Studio поддерживает такую возможность начиная с версии Visual Studio 2005 SP1.
Как и механизм DEP, ASLR не является разработкой исключительно компании Microsoft. Механизмы ASLR были реализованы задолго до появления систем Vista и Windows Server 2008, на таких платформах, как Linux и UNIX. Кроме того, определенные решения Host Intrusion Detection System (HIDS) поддерживали технологию ASLR в линейке систем Windows задолго до того, как системы Windows получили ее встроенную поддержку.
Подробный анализ использования Microsoft ASLR в системе Vista приведен в статье компании Symantec по адресу: www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf. В отличие от службы DEP, компания Microsoft не предлагает специализированного шаблона настройки для оптимального использования технологий ASLR.
Основные механизмы проактивной защиты
Механизмы проактивной защиты от переполнения буфера, предлагаемые технологиями ASLR и DEP, несколько отличаются друг от друга. В то время как служба ASLR усложняет поиск вирусом нужного кода, механизм DEP не дает вирусу выполнить код по найденному адресу. Обе технологии можно применять одновременно, а также использовать их в виртуальных системах, таких как продукты семейств Microsoft Virtual PC и VMware.
С точки зрения поддержки приложений важно помнить, что необходимо тестировать приложения на совместимость с механизмом DEP, прежде чем использовать их в системах с активированной службой DEP. Действие механизма DEP может привести к нарушению работы некоторых приложений или даже к их аварийному завершению.
Важно понимать, что службы DEP и ASLR не решают проблемы переполнения буфера. Обе технологии мешают вирусам использовать эту лазейку в своих целях. Например, служба ASLR усложняет процесс поиска системного кода вирусом, но не в состоянии его предотвратить. В большинстве случаев службы ASLR и DEP эффективно противостоят атакам, основанным на переполнении буфера.
Жан де Клерк (jan.declerq@hp.com) — член Security Office корпорации HP. Специализируется на проблемах управления идентичностью и вопросах безопасности продуктов Microsoft
Рисунок. Простой пример работы механизма переполнения буфера
Экран 3. Пример работы bcdedit в Windows Vista
Таблица 1. Значения параметра NoExecute= в boot.ini и пояснения
Таблица 2. Воздействие ASLR на базовый адрес DLL
All the previous Microsoft Windows Server products since Windows NT have been using NT Loader (NTLDR) and boot.ini to control the boot process and to manage multi operating system environments. For a BIOS based computer that is booting from its hard drive, the BIOS reads the Master Boot Record (MBR) and transfers control to the Master Boot Record (MBR) code. Master Boot Record (MBR) then transfers control to the code that loads the Operating System. NT Loader (NTLDR) is then responsible for loading Windows. NTLDR uses the data from a text file named boot.ini kept on the root folder of the boot drive.
boot.ini text file contains an entry for each version Windows installed on that computer. If multiple versions of Windows are available, NTLDR displays the list of boot entries to allow the user to specify which one should be loaded. NTLDR then loads the Operating System which the user has selected.
Microsoft has re-engineered the entire boot process in Windows 2008 Server and a new concept of Boot Configuration Data (BCD) is introduced. The Boot Configuration Data (BCD) store contains boot configuration parameters and controls how the Windows 2008 Server Operating System is started. The Boot Configuration Data (BCD)
replaces NTLDR in its functionality and the boot configuration data which was configured in boot.ini is now stored in a binary format which can be edited by the tool BCDEdit.exe. You can also use The Startup and recovery dialog box, System Configuration utility (Msconfig.exe), and BCD WMI provider to edit the Boot Configuration Data (BCD).
For BIOS-based Operating Systems, the Boot Configuration Data BCD) is located in the \Boot\Bcd directory of the active partition. For EFI–based operating systems the Boot Configuration Data (BCD) is located on the EFI system partition.
Following new boot applications are present in Windows 2008 Server.
• Bootmgr — Controls the boot flow
• Winload.exe — The Operating System Loader
• Winresume.exe — Operating System Resume Loader after a hibernation.
Source of Information: Microsoft White Paper on Boot Configuration Data
Posted by
on August 27, 2012
Problem:
In Windows Server 2003, to increase the memory allocated the applications, we usually modify the boot.ini and add /3GB. However, there is not boot.ini in Windows 2008. How can more memory be allocated to user’s applications?
Solution:
Use the BCDEDIT command.
Open Command Prompt (run as Administrator) and issue the following command:
BCDEDIT.EXE /Set IncreaseUserVa 3072
Reboot after entering command.
Note: use the above command at your own risk.
Reference:
Who Moved My /3GB?
http://blogs.technet.com/b/askperf/archive/2009/04/03/who-moved-my-3gb.aspx
BCDEdit /set
http://msdn.microsoft.com/en-us/library/windows/hardware/ff542202%28v=vs.85%29.aspx
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM — будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .