谈谈ILDasm的功能限制与解除

简介: 原文:谈谈ILDasm的功能限制与解除首先,我在此申明,此文并不是教别人突破限制,我们只是用学习的眼光看问题 大家都知道ILDasm是。NET程序的反编译工具,它是由Microsoft提供的反编译工具。
原文: 谈谈ILDasm的功能限制与解除

首先,我在此申明,此文并不是教别人突破限制,我们只是用学习的眼光看问题

大家都知道ILDasm是。NET程序的反编译工具,它是由Microsoft提供的反编译工具。

它可以直接把。NET程序反编译为IL文件及资源文件,这样即可以非常容易的让黑客进行修改,删除强命名,修改注册码算法等等。。。并且Ilasm再次编译,得到一个正确的,可发布的程序集
并且,这个功能是其它反编译器所不能替代的功能,因为ILDasm真的太重要了。也许有的朋友能理解,有的朋友不能理解,但没关系,我们今天的重点并不是这个。

这是一件不可思议的事,让软件没有了安全保障。幸亏有了XenoCode,它有一项功能即是 Anti ILDasm 。这是一个非常棒的功能,但它是怎么做到的呢?

其实,这是ILDasm的一个限制,当你在程序中制造某个标志后,那么程序集将不可以再被ILDasm反编译,ILDasm会提示您,这个程序集已经是一个被有版权的程序集,您不可能对其反编译。呵呵,我们最可爱的ILDasm会罢工?

我曾经找过相关资料,不过没有找到有什么最简单的方法让自己的程序集变成已有版权的程序集,XenoCode有这样做,不过我不想去分析它。如果有知道的朋友,请与我交流一下

那么我们今天的任务是什么呢?就是把罢工的ILDasm拉回来,让它继续为我们工作。

OK,分析一下吧:经过短暂的分析,让我出了一身汗。。。这样的版权保护有还不如无,一定误导了很多朋友。

为什么我这样说呢?因为我发现,想让ILDasm再次工作,比想象中的简单很多,这根本就档不住任何东西。请看下面我跟踪的代码:

 

 1 img_a6339ee3e57d1d52bc7d02b338e15a60.gif 0042B4BD   E8 8AFCFDFF      CALL  ildasmCr.0040B14C   // 报错函数
 2 img_a6339ee3e57d1d52bc7d02b338e15a60.gif
 3 img_a6339ee3e57d1d52bc7d02b338e15a60.gif
 4 img_a6339ee3e57d1d52bc7d02b338e15a60.gif00415FC6   E8  12470100       CALL ildasm.0042A6DD     // 进入的主函数
 5 img_a6339ee3e57d1d52bc7d02b338e15a60.gif
 6 img_a6339ee3e57d1d52bc7d02b338e15a60.gif
 7 img_a6339ee3e57d1d52bc7d02b338e15a60.gif0042AABD   FF51 0C          CALL DWORD PTR DS:[ECX + C]     // 判断函数
 8 img_a6339ee3e57d1d52bc7d02b338e15a60.gif 0042AAC0   3BF7             CMP ESI,EDI
 9 img_a6339ee3e57d1d52bc7d02b338e15a60.gif0042AAC2    75  0F            JNZ SHORT   ildasm.0042AAD3      // 关键跳转地址,改为JMP即可
10 img_a6339ee3e57d1d52bc7d02b338e15a60.gif 0042AAC4    68   96010000       PUSH  196
11 img_a6339ee3e57d1d52bc7d02b338e15a60.gif0042AAC9   E8 8964FFFF      CALL ildasm.00420F57
12 img_a6339ee3e57d1d52bc7d02b338e15a60.gif0042AACE   E9 E3090000      JMP ildasm.0042B4B6
13 img_a6339ee3e57d1d52bc7d02b338e15a60.gif



这已经很明显了,ILDasm只用了一个标志去阻止"已有版权"的程序集,而您只需要修改一个机器指令就可以畅通无阻的反编译任何程序集,并修改其内容再次编译

以上代码您可以自己修改,如果您不会,也可以到   http://files.cnblogs.com/Aiasted/ildasm.rar 下载一个已经修改好的版本。

XenoCode配合强命名的做法,可能从此将会消失

(注:我没有从事过任何。NET程序集的破解,仅仅是看过在ILDasm反编译出来的程序集可以去掉强命名一文,如果有对之处,请指正)

目录
相关文章
|
7月前
|
网络协议 API 网络安全
你知道怎么使用DebugView查看内核调试信息吗?
你知道怎么使用DebugView查看内核调试信息吗?
|
iOS开发
iOS开发 - 打包静态framework后,引用时必须做的一件事,否则崩溃
iOS开发 - 打包静态framework后,引用时必须做的一件事,否则崩溃
158 0
|
Shell Windows
Windows程序设计打开另一个程序的三种方法
Windows程序设计打开另一个程序的三种方法
484 0
|
C#
艾伟:C#代码动态编译、动态执行、动态调试
  前几天看到一篇关于.net动态编译的文章 .NET中的动态编译 ,很受启发。在此基础上我做了一些封装,为使调用更加简单,并增加了对动态代码调试的支持,相同代码只编译一次的支持,代码改动自动重新编译,代码引用文件的自动加载和手工加载等功能。
1689 0