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版本不统一。一般情况下不要使用。

  • 相关阅读:
    仿windows的嵌入式GUI系统(一)
    入群必看内容。
    嵌入式开发入门(2)
    仿windows消息机制的嵌入式GUI系统(二)(未完)
    使用硬件定时器软模拟多个定时器(8.15改进版)
    Python 文件目录操作
    C/C++ cast
    C/C++ basic
    C/C++ debug
    C++ 引用返回值
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/fadfds.html
Copyright © 2011-2022 走看看