Как отличить DLL-файлы
У меня есть программа, которая загружает каждый модуль в процесс и сравнивает их с базой данных запрещенных DLL-файлов, которая прекрасно работает, но ее слишком просто обойти (просто измените имя файла dll, который вы хотите внедрить в процесс). Поэтому я спрашиваю, как я могу отличить файлы DLL. Есть ли какой-нибудь уникальный идентификатор, который можно использовать в C#? Благодарю.
РЕДАКТИРОВАТЬ: я забыл упомянуть, что программа, которую я создаю, проверяет dll файлы другой программы, не созданной мной, которая написана на C++.
2 ответа
Вы можете перебирать каждый модуль, загруженный в процесс. Как мне перечислить все загруженные сборки? и посмотреть, правильно ли существует каждый модуль, такой как ModuleVersionId, который не изменяется при изменении имени файла?
Я не уверен, что это хотя бы удаленно достойный способ справиться с этим, но, возможно, попробуйте хэшировать файл DLL и проверить на наличие известных доверенных хэшей файлов? это потребовало бы, чтобы у вас уже был список доверенных хэшей dll, но следует защититься от простого переименования, чтобы обойти вашу текущую меру безопасности.