C# 在没有源代码的情况下,攻击正在运行的.net应用程序的公共静态字段

C# 在没有源代码的情况下,攻击正在运行的.net应用程序的公共静态字段,c#,visual-studio,debugging,static-methods,C#,Visual Studio,Debugging,Static Methods,我在c#应用程序中使用公共静态字段: 没有应用程序源代码的人(模糊化的人)可以在应用程序运行时更改这些字段吗?(例如,使用VS的附加功能)是的,它们甚至不需要附加调试器。因为这些字段是公共的,所以有人需要做的就是将你的程序添加为对它的引用,然后他们就可以从他们的主函数中调用你的主函数,他们可以随心所欲地操作所有公共变量。虽然我个人从未尝试过这一点,但我可以想象你可以使用.NET Reflector反编译DLL,然后使用新构造的“源代码”对正在运行的进程进行调试 使用类似于和附加调试器的东西,应该

我在c#应用程序中使用公共静态字段:


没有应用程序源代码的人(模糊化的人)可以在应用程序运行时更改这些字段吗?(例如,使用VS的附加功能)

是的,它们甚至不需要附加调试器。因为这些字段是公共的,所以有人需要做的就是将你的程序添加为对它的引用,然后他们就可以从他们的主函数中调用你的主函数,他们可以随心所欲地操作所有公共变量。

虽然我个人从未尝试过这一点,但我可以想象你可以使用.NET Reflector反编译DLL,然后使用新构造的“源代码”对正在运行的进程进行调试

使用类似于和附加调试器的东西,应该是可能的。至少由于混淆,这并不容易


希望有帮助

如果它们是公共的,有人可以引用你的应用程序并对字段执行任何操作。如果你不想让人们访问它们,就不要将它们公开。但这是一个完全不同的问题…内部修饰符会保护它们吗?从这个特定的情况来看,是的,但如果有人知道字段的名称是什么,他们可以使用反射来访问任何内部、受保护或私有字段。即使程序集被模糊化了?是的,模糊化所做的只是使名称无法读取。如果他们知道字段是什么,他们不需要知道名称是什么,他们可以在反射中使用模糊的名称。