Как победить C # GetCallingAssembly (). Безопасность местоположения - PullRequest
0 голосов
/ 23 сентября 2011

Я пытаюсь загрузить и выполнить динамически внешнюю сборку вопреки пожеланиям разработчика.Он выполняет проверку хеш-функции в GetCallingAssembly (). Location и закрывается.

Сборка часто обновляется, поэтому редактирование кода IL для обхода этой проверки было бы возможным, но это должно быть сделано программно перед загрузкой.,Это было бы ненадежно, и я не мог найти адекватную документацию о каких-либо инструментах, которые могли бы быть использованы для его исправления.Я также мог бы вообще обойти проверку, просто вызвав более позднюю функцию напрямую, если бы смог разобрать несколько строк из сборки.Это было бы проще, но наименее ненадежно, если бы что-то существенное было изменено, мой код сломался бы.

AFAIK Нет простого способа контролировать то, что возвращает GetCallingAssembly (). Расположение дочернего процесса.У меня есть полные права на исполняющий компьютер, если это поможет.

В противном случае я надеялся, что смогу использовать какую-то функцию хука или Windows 7 для перенаправления чтения C # FileStream из одного файла в другой, но я неЯ не знаю, как мне поступить.

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

Спасибо

1 Ответ

3 голосов
/ 23 сентября 2011

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

Однако, если бы мне пришлось что-то обходить для законного причина (исследование, старое программное обеспечение и т. Д.) Мне нужно было бы исправить это в случае, подобном этому.Поскольку вызов поступает в системную библиотеку .net, вы не можете управлять возвратом, не используя загрузчик времени выполнения для исправления этой функции в системной библиотеке или исправления функции в результирующей сборке.Есть способы подключить системные библиотеки, но я не уверен, что то, что здесь задумано, является законным, поэтому я не буду комментировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...