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

  • 相关阅读:
    vue-cli3初尝试之路径别名配置
    nodejs之koa-router与koa-body搭配使用
    nodejs之crypto加密算法
    nodejs之glob与globby
    vuecli3初尝试(转载)
    python之线程同步
    python之多线程通信
    python之通过thread来实现多进程
    U盘启动盘安装Mac OS
    Windows环境下制作MACOS X U盘安装盘
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/fadfds.html
Copyright © 2020-2023  润新知