Проверка библиотек DLL с помощью отражения в ASP .Net

#asp.net #.net #dll #reflection

#asp.net #.net #dll #отражение

Вопрос:

Я пытался найти больше информации о технике обнаружения dll и exe путем написания программ с использованием ASP .Сеть и отражение (?). Я ничего не смог найти.

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

Я только начинаю свой поиск этого и задавался вопросом о каких-либо хороших ресурсах для ускорения процесса обучения.

Ответ №1:

Меня больше интересует понимание того, как написать программу, которая принимает неизвестный файл или исполняемый файл и определяет свойства и методы, которые являются общедоступными.

Отражение — хороший способ сделать это. Вот несколько советов, если вам не нужно полное объяснение кода.

  1. Вы можете использовать Assembly.ReflectionOnlyLoad для загрузки существующей сборки. Это будет работать только для .СЕТЕВЫЕ сборки. Разница между Load и ReflectionOnlyLoad заключается в том, что Load загружается сборка, которая позволяет вам ее использовать, например, выполнение метода для типа в этой сборке. ReflectionOnlyLoad полезно, когда вы хотите только посмотреть, что находится в сборке, не выполняя никакого кода. Другим преимуществом ReflectionOnlyLoad является то, что ему все равно, для какой платформы была скомпилирована сборка.

  2. После того, как у вас есть сборка, вы можете использовать метод, подобный GetExportedTypes для получения списка всех общедоступных типов. Если вы хотите получить общедоступные и непубличные, вы можете использовать just GetTypes () .

  3. Итак, теперь у нас загружена наша сборка и список всех типов. Type Класс имеет несколько членов для работы с этим типом. На ум приходят GetMethod и GetProperties.

Вы можете обратиться к этой статье MSDN для более общего обзора отражения.

Комментарии:

1. Для меня это хорошее начало. Означает ли это, что если я хочу обнаружить другие библиотеки DLL, которые, возможно, не были написаны на .net, мне нужно будет использовать другой язык. Будет ли c лучшим выбором для написания неизвестной проблемы dll. По вашему мнению, какой язык лучше всего выбрать и какие методы лучше всего использовать для гибкой проверки dll?

2. @byten . NET хранит всю свою информацию совсем по-другому, чем собственный двоичный файл. Если вы хотите узнать больше о библиотеках DLL, которые не были написаны для . NET Я бы начал изучать формат файла PE