zoukankan      html  css  js  c++  java
  • ILDASM的使用

    写在前面:微软中间语言(MSIL)是一种语言,所有.NET的语言如C#,VB.NET都会被编译成为IL语言。ILDASM是.NET环境自带的反编译工具,可以查看到dll或exe生成的源代码。而因为IL是一种语言,按IL的语法可以反向生成dll,如果您想修改.NET自带的dll的源代码,这是一个方法。

    ILDASM举例
    来自互联网的例子

    private void Form1_Load(object sender, EventArgs e)
    {
    int i = 0;
    i = i++;
    MessageBox.Show(i.ToString());
    }


    在开始-所有程序-Microsoft .NET Framework SDK v2.0-Tools-MSIL反汇编程序中,可以找到ILDASM工具,如果您已经删除了这个快捷方式,可以在开始-所有程序-Microsoft Visual Studio 2005-Visual Studio Tools-Visual Studio2005命令提示,然后键入ildasm,就可以显示这个工具,如果连这个快捷方式都删除了,就只能直接从安装目录中搜索这个文件了。生成的IL代码是

    .method private hidebysig instance void Form1_Load(object sender,
    class [mscorlib]System.EventArgs e) cil managed
    {
    // 代码大小 22 (0x16)
    .maxstack 3
    .locals init ([0] int32 i)
    IL_0000: ldc.i4.0
    IL_0001: stloc.0
    IL_0002: ldloc.0
    IL_0003: dup
    IL_0004: ldc.i4.1
    IL_0005: add
    IL_0006: stloc.0
    IL_0007: stloc.0
    IL_0008: ldloca.s i
    IL_000a: call instance string [mscorlib]System.Int32::ToString()
    IL_000f: call valuetype [System.Windows.Forms]System.Windows.Forms.DialogResult [System.Windows.Forms]System.Windows.Forms.MessageBox::Show(string)
    IL_0014: pop
    IL_0015: ret
    } // end of method Form1::Form1_Load


    生成IL代码,可以在一定程序上帮助我们理解代码执行的内容。

    使用ILDASM和其它工具修改.NET自带的dll
    您可以在网上搜索这个文章
    微软MVP手把手教你如何修改.NET Framework
    笔者正是从这个网址了解相关信息http://bbs.bbsgood.com/post_6_151902_1.html
    原理
    系统自带的dll被调用之后,会在临时的目录中生成il代码,使用FileMon这个工具可以找到这一特定的dll。找到目录后,使用ildasm反编译dll,生成il文件,再使用Reflector工具找到自己要修改的代码,在了解IL语言的前提下,修改相关的IL代码。最后编译为dll,放到相应的目录。
    不过这个过程实在是太辛苦,又会导致系统默认的dll版本不统一。一般情况下不要使用。

  • 相关阅读:
    [BZOJ3745][Coci2015]Norma
    [OJ#15]TR #2 画心
    [BZOJ3585][BZOJ3339]mex
    [OJ#63]树句节够提
    [LOJ#2255][BZOJ5017][Snoi2017]炸弹
    [LOJ#525]「LibreOJ β Round #4」多项式
    【字符编码】Java字符编码详细解答及问题探讨
    【Java基础】序列化与反序列化深入分析
    【目录】JVM目录
    【知识积累】随机数生成的几种方法
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/fadfds.html
Copyright © 2011-2022 走看看