谈谈ILDasm的功能限制与解除

简介:

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

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

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

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

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

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

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

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

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

 

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



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

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

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

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










本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/1174631,如需转载请自行联系原作者
目录
相关文章
|
人工智能 缓存 Shell
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
[笔记]Windows核心编程《二十》DLL的高级操作技术(二)
327 0
|
编译器 分布式数据库 C++
[笔记]Windows核心编程《二十》DLL的高级操作技术(一)
[笔记]Windows核心编程《二十》DLL的高级操作技术
126 0
|
Unix Linux 调度
Linux 多线程开发(附有案例代码)
Linux 多线程开发(附有案例代码)
【C#编程最佳实践 十九】与文件相关的操作
【C#编程最佳实践 十九】与文件相关的操作
104 0
|
Python
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
上古代码漫游记(二):把陷阱去掉了,反倒踩进了新的陷阱?
112 0
|
人工智能 缓存 编译器
[笔记]Windows核心编程《二十》DLL的高级操作技术
Windows核心编程《二十》DLL的高级操作技术
283 0
[笔记]Windows核心编程《二十》DLL的高级操作技术
J3
|
Java
对象只能new吗?傻瓜、海王都是会五六种方式
绝对不是标题党,我真能用五六种方式创建出对象出来,只不过是在 Java 中。 当然,我也绝非海王,这毋庸置疑😛😛😛。
J3
196 0
对象只能new吗?傻瓜、海王都是会五六种方式
|
数据安全/隐私保护
Mac 技术篇-应用程序被锁定无法进行卸载问题解决方法,文件、文件夹被锁定无法移入废纸篓处理方法,卡巴斯基被锁定如何进行卸载演示
Mac 技术篇-应用程序被锁定无法进行卸载问题解决方法,文件、文件夹被锁定无法移入废纸篓处理方法,卡巴斯基被锁定如何进行卸载演示
2034 0
Mac 技术篇-应用程序被锁定无法进行卸载问题解决方法,文件、文件夹被锁定无法移入废纸篓处理方法,卡巴斯基被锁定如何进行卸载演示
Win7系统中解除VS2008过期限制程序,附源码
Win7系统中解除VS2008过期限制程序,附源码 下载地址: http://files.cnblogs.com/waw/Win7_VS2008_Cracker.rar
707 0
|
算法 Linux C++
G++ 4.4.7 无法编译模板程序,Vs可以,和解?智者尾部留言,本人第一次使用vs pro,通常并且习惯在linux下写些小东西,虽然程序简单;
vs 模板编译运行Ok \ linux g++ 4.4.7编译模板测试程序,报无法定义 template 类型的数据    Example is sample!But include Knowledge is more eg: 1,Reference type 2,多不同类型公用一种算法使用-...
1186 0