Действительно ли возможно заменить Загрузчик ОС? Какой-либо способ получить управление Загрузчиком?

Я просто задавался вопросом, возможно ли заменить Загрузчик (загрузчик исполняемой программы не загрузчик) Операционной системы (Windows является моим выбором). Есть ли любые сторонние загрузчики, доступные, который исправил бы по умолчанию.

Есть ли какой-либо путь, через который я могу получить управление Загрузчиком ОС? Я имею в виду, я хочу вещи, которые это делает, чтобы быть видимым мне (каждый шаг).

Если Вы спрашиваете меня, почему я хочу сделать это, For learning purposes.

6
задан claws 30 January 2010 в 21:04
поделиться

6 ответов

Поскольку каждый из ответов и комментариев дает полезную информацию. Я просто собрал все ответы и комментарии в один пост.

Мне просто интересно, можно ли заменить загрузчик (загрузчик исполняемой программы , а не загрузчик) операционной системы (Windows - это мой {{1} } выбор).

Нет, в Windows процесс создания и загрузчик пользовательского режима в ntdll связаны друг с другом (PsCreateProcess напрямую отображается в ntdll и переходит к нему, чтобы завершить разрешение модулей и настройку процесса), вы не можете его заменить.

, но есть ресурсы, описывающие формат и загрузку процессов.

Вот довольно старая, но все еще актуальная статья MSDN о PE-файлах (exe + dll)

  1. Часть I. Углубленный взгляд на формат переносимого исполняемого файла Win32 , автор Мэтт Пьетрек. (MSDN Magazine, февраль 2002 г.)
  2. Часть II. Подробное описание формата переносимого исполняемого файла Win32 , автор: Мэтт Пьетрек (MSDN Magazine, март 2002 г.)

Вы можете использовать эту информацию, чтобы написать приложение, которое запускает данный исполняемый файл.

Если вас больше интересуют Linux и формат elf, вы найдете все, что вам нужно, в Google.

Есть ли способ, с помощью которого я могу получить контроль над загрузчиком ОС? Я хочу сказать, что я хочу, чтобы все, что он делает, было видно мне (каждый и каждый шаг).

В Windows вы можете получить некоторое представление о работе загрузчика, включив Snaps загрузчика. Это можно сделать с помощью gflags.exe (часть средств отладки для Windows). Есть хорошая ссылка gflags.exe http: //www.osronline.com / DDKx / ddtools / gflags_4n77.htm . Если параметр «Показать моментальные снимки загрузчика» включен, вы можете просматривать сообщения трассировки загрузчика, запустив приложение в отладчике (WinDBG).

Если вы хотите поиграть с подобными вещами, то Linux - лучший путь.

Загрузчик является частью ядра, но, поскольку у вас есть доступ ко всем исходным текстам ядра, вы можете играть с ним сколько угодно.

Загрузчики для различных двоичных форматов находятся в fs / binfmt _ *. C в исходном коде Linux ( fs / binfmt_elf.c - это загрузчик, используемый для исполняемых файлов в формате ELF, т.е. . подавляющее большинство).

Динамический загрузчик / lib {, 64} /ld-linux.so.2 также используется для динамически связанных двоичных файлов - это пример «интерпретатора», на который ссылается код в binfmt_elf. c.

В Linux есть подключаемые форматы исполняемых файлов, поэтому можно добавить дополнительный загрузчик программ, который будет выполнять свои собственные настройки с исполняемыми файлами, а не со стандартными (ELF, сценариями оболочки, binfmt_misc).

Модуль binfmt_misc позволяет вам писать собственные загрузчики для исполняемых программ полностью в пользовательском пространстве; это обычно используется для выполнения неродных двоичных файлов или интерпретируемых двоичных файлов, таких как исполняемые файлы Java, CLR и т. д.

С другой стороны, если вы хотите заменить загрузчик ELF чем-то еще, вы можете создать модуль binfmt непосредственно в ядре. См. Примеры fs / binfmt _ * . Сам загрузчик ELF находится там.

2
ответ дан 8 December 2019 в 17:21
поделиться

Нет, вы не можете заменить погрузчик ОС, но есть ресурсы доступны, описывающие формат и загрузку процессов.

Вот довольно старый, но все еще Uptodate MSDN-статья, касающаяся файлов PE (EXE + DLL) http://msdn.microsoft.com/en-us/magazine/cc301805.aspx

Вы можете использовать это Информация для записи приложения, которое запускает данный исполняемый файл.

Если вы больше заинтересованы в Linux и формате ELF, вы найдете все, что вам нужно в Google.

1
ответ дан 8 December 2019 в 17:21
поделиться

Почему бы не попробовать создать свой список предметов в помощнике, а затем передавать это в тег выбора?

Я не знаю много о формастице, или acts_as_tree, но если у вас возникли проблемы с тем, как у вас есть Выше я думаю, прибегая к созданию ваших вариантов, прежде чем передавать их в ваш выбор, совершенно разумный.

-121--3595014-

Linux имеет смежные исполняемые файлы форматы файлов, поэтому можно добавить дополнительный программный загрузчик, который будет выполнять собственные пользовательские вещи с исполняемыми файлами, а не стандартными (ELF, скрипты оболочки, binfmt_misc ).

Модуль binfmt_misc позволяет полностью писать пользовательские погрузчики для исполняемых программ, полностью в пользовательском пространстве; Это обычно используется для выполнения ненациональных дворовиков или интерпретированных двоичных файлов, таких как Java, исполняемые файлы CLR и т. Д.

С другой стороны, если вы хотите , заменить , загрузчик ELF с чем-то другим, вы можете сделать BINFMT Модуль непосредственно в ядре. Посмотрите на FS / Binfmt_ * для примеров. Сам эльф загрузчик там там.

2
ответ дан 8 December 2019 в 17:21
поделиться

Есть ли способ, которым я могу получить контроль над погрузчиком ОС? Я имею в виду, я хочу, чтобы все это делают, чтобы быть видимым для меня (каждый и каждый шаг).

В Windows вы можете получить некоторую видимость в загрузчик на работе, включив защелки для загрузки. Вы делаете это с GFLAGS.EXE (часть инструментов отладки для Windows). Есть хорошая ссылка GFLAGS.EXE здесь . С помощью Show Doader Snaps включен, вы можете увидеть сообщения Trace Loader, запустив приложение под отладчик (WinDBG).

1
ответ дан 8 December 2019 в 17:21
поделиться

Нет, создание процесса и загрузчик пользовательского режима в ntdll связаны между собой (PsCreateProcess напрямую отобразит в ntdll и перейдет к нему, чтобы он смог закончить разрешающие модули и настройку процесса), заменить его нельзя.

5
ответ дан 8 December 2019 в 17:21
поделиться

Если вы хотите поиграть с подобными вещами, то Linux - это то, что вам нужно.

Загрузчик является частью ядра, но так как у вас есть доступ ко всему исходному коду ядра, вы можете играть с ним до глубины души.

3
ответ дан 8 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: