C#的中间代码安全吗?

直接进入试验:

 

我现在有一个很简单的类(文件名:Test.cs)

public class Test

{

       private string s;

       public Test(string some)

{

       s = some;

}

}

 

从代码上看我们无法直接访问私有数据s

编译:csc /t:library Test.cs 生成Test.dll文件。

现在我们反编译:ildasm /tok /byt Test.dll /out=Test.il (中间代码文件Test,il)

在中间代码中找到 private string s;那一段。修改修饰符private public后保存

文件。

现在我们开始编译中间代码生成dll文件:ilasm /dll Test.il

 

 

现在我们使用刚才修改后编译的dll。文件名:mainclass.cs

using System;

class Mainclass

{

       public static void Main()

       {

              Test t = new Test(“Hello”);

              Console.WriteLine(t.s);

       }

}

 

编译:csc /r:test.dll mainclass.cs

 

输出结果:C:\Test\1>mainclass

Hello

 

经过上面的修改,我们很容易看到很多私有信息,.Net下的中间代码还安全吗?

你可能感兴趣的:(C#)