hottabxp
@hottabxp
Миллиардер. Честно, 100 пистонов!

Можно ли подменить dll сборку в .Net?

Например, простой код:
using System;

	class Program
	{
		public static void Main(string[] args)
		{
			Console.ReadKey(true);
		}
	}

После сборки, загружаю в декомпилятор, и вижу что программа использует mscorlib.dll по адресу: C:\Windows\Microsoft.NET\Framework\v4.0.30319

Есть ли список каталогов, в которых ищутся сборки, или они жестко вшитые? И можно ли, без редактирования приложения, заставить использовать mscorlib.dll из другой папки?
  • Вопрос задан
  • 91 просмотр
Пригласить эксперта
Ответы на вопрос 4
@vabka Куратор тега C#
Токсичный
Да - можно положить рядом с екзешником, например. Но с mscorlib такое, скорее всего, не прокатит, тк это подписанная сборка и приложение будет искать конкретную сборку
Ответ написан
firedragon
@firedragon
Senior .NET developer
Возможно это вас наведет на что то

C:\Users\kvn>echo %windir%
C:\Windows


Впрочем если PE лоадер найдет где то эту библиотеку раньше. А это уже нужно смотреть в PSDK. То может быть и запустится
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Может положить его рядом с файлом .ехе.
Ответ написан
@d-stream
Готовые решения - не подаю, но...
Ну можно создать отдельный домен приложения и грузить туда сборки через Assembly.LoadFrom
+ пригодится подвесить на событие CurrentAppDomain.AssemblyResolve свой обработчик, который будет подсовывать нужное

Вопрос только - зачем это надо для фрейвочных сборок? Попытаться запустить программу без установленного фреймворка?)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы