在我的 .net 应用程序中,我想限制对某些程序集的反射。我的意思是我希望我的特定程序集只能由某些预定义的程序集反映,而不是由其他任何程序集反映。我怎样才能做到这一点?
Edit:
这个工具完全关闭程序集的 .NET 反汇编和反编译。我想允许一些预定义的程序集反映此程序集,但限制其他程序集这样做。我想要一些应该被声明为汇编明智的东西,例如AssemblyOne 已向 AssemblyTwo 授予您可以反映我的权限,因此只有 AssemblyTwo 应该能够完全信任地反映它,其他人都不能。
您链接到的工具基本上将整个应用程序编译为本机代码。这并没有真正“关闭”反射或其他任何东西,它只是将应用程序变成完全不同的东西,它不再是字节码,从技术上讲也不再是 .NET 程序集。
完全信任的呼叫者可以always在 .NET 程序集及其内部的所有内容上使用反射。除了(a)混淆,任何有足够耐心和决心的人都可以反混淆,或(b)编译为本机代码,这将阻止any类型的反射(以及许多其他有用的功能),您无法阻止这种情况的发生,并且您当然不能将其限制为特定的程序集。
The ReflectionPermissionAttribute
与其他答案之一相反,not防止来电者反映on你的代码;相反,它控制访问from该代码to反射 API。这里不会有任何帮助。
为什么隐藏代码或类结构如此重要?除非您为国家安全局工作,否则大多数代码都没有那么有价值/秘密,并且只要有足够的时间和资源,大多数应用程序都很容易进行逆向工程。实际上,攻击者或抄袭者从 Reflector 中复制代码和/或使用 Reflection 来发现您的 API 几乎得不到什么好处。
我想我只能代表自己说话,但如果有 1 天的空闲时间来实现一项很酷的功能或投资于保护内部代码,我将始终致力于开发真正增加价值的新功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)