博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JustDecompile修改程序集
阅读量:4327 次
发布时间:2019-06-06

本文共 1457 字,大约阅读时间需要 4 分钟。

原文:

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

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

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

ldc.i4.0

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

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

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

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

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,实现想要的结果。这里的例子很简单,希望您能举一反三,实际情况可能比较复杂。

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

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

posted on
2014-06-24 00:20 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3805240.html

你可能感兴趣的文章
L2-003. 月饼
查看>>
jsp html5 video实现在线视频播放源码,支持IE6,7,8,10,11,谷歌,火狐等浏览器
查看>>
codeforces 8VC Venture Cup 2016 - Elimination Round C. Lieges of Legendre
查看>>
Eclipse断点调试(上)
查看>>
Spring的aop操作
查看>>
平差方法
查看>>
关于有序guid 的使用
查看>>
arcgis 画图工具
查看>>
[Leetcode]leetcode1-10题随记
查看>>
HDU 4162 Shape Number
查看>>
HDU 5211 Mutiple 水题
查看>>
linux中ctrl+z、ctrl+d和ctrl+c的区别
查看>>
mysql数据库的简单操作
查看>>
走过2013,走进2014
查看>>
修改tomcatlog输出等级
查看>>
数据结构 堆栈
查看>>
微信公众号开发C#系列-6、消息管理-普通消息接受处理
查看>>
RDIFramework.NET V2.9版本 WinFom部分新增与修正的功能
查看>>
AOP实战
查看>>
最大堆,最小堆及堆排序
查看>>