zoukankan      html  css  js  c++  java
  • 使用JustDecompile修改程序集

           JustDecompile是Telerik公司推出一个免费的.net反编译工具,支持插件,与Visual Studio 2010,2012集成,能够创建Visual Studio project文件。今天我们使用其一个插件Assembly Editor Plugin来修改程序集。首先,我们来写一个非常简单的时间限制程序:

       1:          static void Main(string[] args)
       2:          {   
       3:              Timebomb();
       4:          }
       5:          static void Timebomb()
       6:          {
       7:              var message = "Welcome to demo";
       8:              if (DateTime.Now > new DateTime(2012, 12, 01))
       9:              {
      10:                  Environment.Exit(0);
      11:              }
      12:              Console.WriteLine(message);
      13:              Console.Read();
      14:          }

    看上面的代码,可以看出程序时,检查当前时间是否过期,如果是就退出了。假设我没有程序的源代码,下面用这个工具解除这个时间限制的问题:

    2012-12-17_163414

    通过反编译后,我们看到IL, 假设您对IL有一定的了解。offset 39 

    ldc.i4.0

    意思是将常数0做为4个字节整数压入栈,  offset 40 接着是

    call  System.Void System.Environment::Exit(System.Int32) 

    意思是调用System.dll中Environment类Exit方法。我们还可以看到具体的时间,你可修改他们,让我们来修改多点儿东西。我们在上面单击右键选择Edit,把这两条IL分别修改为nop 操作,从而达到让主程序不退出的效果,最后在上面点击右键另存为新的程序集。

    2012-12-17_164118

    最后运行刚才另存为的程序集,结果与我们期待的一致。此时我们反编译程序集的这个方法,是如下代码:


       1:  private static void Timebomb()
       2:  {
       3:      string str = "Welcome to demo";
       4:      if (DateTime.Now > new DateTime(0x7dc, 10, 9))
       5:      {
       6:      }
       7:      Console.WriteLine(str);
       8:      Console.Read();
       9:  }
      10:   
      11:   

    小结,对于没有混淆的程序集,我们可以看懂代码逻辑,在没有源代码的情况,借用Reflexil插件可以简单修改IL,实现想要的结果。这里的例子很简单,希望您能举一反三,实际情况可能比较复杂。

    希望对您软件开发有帮助。


    作者:Petter Liu
    出处:http://www.cnblogs.com/wintersun/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    该文章也同时发布在我的独立博客中-Petter Liu Blog

  • 相关阅读:
    内存分配方式与变量的生存周期【转】
    C++动态内存创建与内存管理学习笔记【转】
    C内存分配问题(内存达人请进)【转】
    Singular Value Decomposition(SVD)奇异值分解【转】
    Euclidean space欧几里得空间【转】
    C语言面试题汇总(华为公司) 【转】
    C语言内存分配问题和C语言中的内存【转】
    iPhone无法在Mac的Finder中显示?如何解决问题
    OGRE 入门 三、Basic Tutorial 2 : Cameras, Lights, and Shadows
    leetcode 一个算法面试题相关的网站
  • 原文地址:https://www.cnblogs.com/wintersun/p/2821967.html
Copyright © 2011-2022 走看看