Замена классов в системном пространстве имен

Я в настоящее время работаю для взламывания моей операционной системы.NET выполнение сверху MS.NET/Mono (ранее, это выполнило только чистый металл), и я наткнулся на маленькое препятствие. Я должен реализовать свою собственную Систему. Консоль, которая говорит с моей инфраструктурой обслуживания, и я не могу найти хороший способ заменить ее без любого, 1) не связавшись против mscorlib (был бы hellacious, чтобы сделать), или 2) Используя пространство имен NotQuiteSystem для моих замен, которые повредят совместимость.

Существует ли механизм, которым я могу чисто заменить Системные классы, не делая одной из тех вещей?

Править: Одна мысль состоит в том, чтобы использовать Моно. Cecil для перезаписи ссылок на Систему. Консоль к Renraku. Система. Консоль или somesuch, но я предпочел бы работать в платформе, если это возможно.

14
задан Cody Brocious 18 January 2010 в 14:46
поделиться

7 ответов

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

См. Эта страница Для получения дополнительной информации о плетении времени компиляции в PostSharp. и Эта страница для информации о плетении нагрузки (происходит во время выполнения непосредственно перед сборкой в ​​памяти).

Для плетения времени выполнения (модификация существующих методов во время выполнения) посмотрите Linfu .

[За исключением от страницы]

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

[/ За исключением от страницы]

4
ответ дан 1 December 2019 в 16:44
поделиться

Я не думаю с вашими ограничениями третьей стороны, которую вы можете переключиться с System.Console. Почему бы не написать новый класс с тем, что вы хотели или искать материал с открытым исходным кодом.

Есть еще одна альтернатива - использовать Windows PowerShell, но я думаю, что также не будет работать в вашем случае

0
ответ дан 1 December 2019 в 16:44
поделиться

Как насчет косвенности на консольных методах. Используйте Отражение для загрузки указателей функции на нужные вам функции, и тогда вы можете иметь файл конфигурации, который предоставляет фактические имена функций для использования

, т. Е. В вашем коде вы называете doconsoleRead

при запуске DoconsoleCread указать на некоторую произвольную функцию

0
ответ дан 1 December 2019 в 16:44
поделиться

Я думаю, что это может быть сделано с использованием узла ссылок в листе свойств. Посмотрите на этот пример: http://www.codeproject.com/kb/mobile/wm2005globalization2.aspx . Это «исправляет» класс в компактной структуре, я думаю, вы можете сделать его работать в полной мере, но я могу проверить это прямо сейчас. (Нет против работы)

0
ответ дан 1 December 2019 в 16:44
поделиться

Как насчет замены класса системы в GAC? Я знаю, что Java есть переключатель BootclassPath определяет местоположение классов Java «Bootstrap» - Java.lang.Object, java.lang.exception и т. Д.

0
ответ дан 1 December 2019 в 16:44
поделиться

Вы смотрите только для перенаправления стандарта и стандартных? Если так, Console.setin (Textreader In) и Console.Setout (TextWriter OUT) именно то, что вы ищете.

Насколько другие методы идут, я почти уверен, что они все пройдут через Mscorlib в какой-то момент. Если нельзя позволить себе, вы можете в конечном итоге написать свой собственный консольный класс в конце концов.

0
ответ дан 1 December 2019 в 16:44
поделиться

Как насчет запущенного ротора (SSCLI) на вашу ОС? Там у вас также есть полный исходный код и абстракция из базовой ОС http://www.microsoft.com/downloads/details.aspx?familyid=8C09FD61-3F26-4555-AE17-3126-4555-AE17-3121B4F51D4D&displaylang=en

провел некоторое время в отражении с MS .NET, мы все это знаем Плотно связан с Win 32 API, что только приведет к тому, что ваша ОС будет больше похоже на Windows, а затем новая чистая ОС.

Другое, что то, что перезаписи ссылки кажутся жизнеспособными опцией.

0
ответ дан 1 December 2019 в 16:44
поделиться
Другие вопросы по тегам:

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