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下的中间代码还安全吗?