确定真正的调用程序集的方法
我在客户端程序中内置了一些安全性,从网上下载DLL,并在该DLL内部调用一个函数。 DLL是强命名的,并且DLL中的函数使用Assembly.GetCallingAssembly()
来确定调用程序集,以便我可以准确地获取调用它的程序的路径。 从那里我们对组件进行散列检查,并验证它是否正确。
我们有人以完全信任模式连接到自己,并且可以欺骗GetCallingAssembly
调用以指向真正的可执行文件,同时它们运行修改后的版本。 有没有其他的GetCallingAssembly
,我可以用来获取真正的调用者? 由于GetCallingAssembly
似乎很容易被欺骗,因此一些callstack或可能提供真正可执行文件的东西。
在完全信任模式下运行时无法执行此操作。 完全信任意味着人们可以做欺骗等事情。 这里也有类似的讨论:关于混淆的反思是可能的
我不确定它有多安全,但我过去曾用它来获取启动路径:
string startup_path =
Path.GetDirectoryName(typeof(SomeClassInDll).Assembly.Location);
链接地址: http://www.djcxy.com/p/9871.html