1

是否可以阻止某人使用反射来获取内部类变量的值?

我有一个内部(VB 中的朋友)类级别变量,只有在调用者知道密码时才应该可以访问该变量。有一种方法可以公开此变量,该变量需要密码,但可以使用反射直接访问该变量。我可以防止这种情况发生吗?

更多详细信息,可能会破解此变量的代码作为插件加载到主应用程序。

4

1 回答 1

3

您可以通过混淆源代码使反射更难(但并非不可能) 。这主要将代码中使用的名称更改为难以猜测的难以辨认的名称。但是,它不提供任何保证,任何坚定的程序员都可以找出这些名称并反映他/她想要的一切。

或者,您可以通过用非 .NET 语言(例如非托管 C++)实现该部分代码(整个类)来使反射变得不可能。例如,在托管代码中没有实现mscorlibInternalGetHashCode方法,因此无法反映到它以查看它是如何工作的。

您可以使用 PInvoke 从托管代码中调用非托管功能。

于 2013-02-19T21:14:44.470 回答