我在客户端程序中内置了一些安全措施,该程序从 Web 下载 DLL,并调用该 DLL 中的函数。 DLL 是强命名的,DLL 中的函数使用 Assembly.GetCallingAssembly()
来确定调用程序集,以便我可以准确地获取到调用它的程序的路径。从那里我们对程序集进行散列检查并验证它是正确的。
我们有些人已将自己附加到完全信任模式,并且能够欺骗 GetCallingAssembly
调用以指向真正的可执行文件,同时运行它的修改版本。除了 GetCallingAssembly
之外,还有其他东西可以用来获取真正的调用者吗?由于 GetCallingAssembly
似乎很容易被欺骗,一些调用堆栈或可能提供真正可执行文件的东西。
最佳答案
您不能在完全信任模式下运行时执行此操作。完全信任意味着人们可以做欺骗之类的事情。这是一个类似的讨论: reflection is possible on obfuscation
关于c# - 确定真正调用程序集的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903103/