Способ определения истинной вызывающей сборки

У меня есть некоторая защита, встроенная в программу на стороне клиента, которая загружает DLL из Интернета и вызывает функцию внутри этой DLL. DLL имеет строгое имя, а функция в DLL использует Assembly.GetCallingAssembly () для определения вызывающей сборки, чтобы я мог точно получить путь к программе, которая ее вызвала. Оттуда мы выполняем хеш-проверку сборки и проверяем, что она правильная.

У нас есть люди, которые подключились в режиме полного доверия и могут имитировать вызов GetCallingAssembly , чтобы указать на настоящий исполняемый файл, в то время как они запускают его модифицированную версию. Есть ли что-то еще, кроме GetCallingAssembly , которое я могу использовать для определения истинного вызывающего абонента? Какой-то стек вызовов или что-то, что может предоставить реальный исполняемый файл, поскольку GetCallingAssembly кажется легко подделать.

7
задан casperOne 26 October 2011 в 13:21
поделиться