博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
谈谈ILDasm的功能限制与解除
阅读量:6323 次
发布时间:2019-06-22

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

原文:

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

大家都知道ILDasm是。NET程序的反编译工具,它是由Microsoft提供的反编译工具。
它可以直接把。NET程序反编译为IL文件及资源文件,这样即可以非常容易的让黑客进行修改,删除强命名,修改注册码算法等等。。。并且Ilasm再次编译,得到一个正确的,可发布的程序集
并且,这个功能是其它反编译器所不能替代的功能,因为ILDasm真的太重要了。也许有的朋友能理解,有的朋友不能理解,但没关系,我们今天的重点并不是这个。
这是一件不可思议的事,让软件没有了安全保障。幸亏有了XenoCode,它有一项功能即是 Anti ILDasm 。这是一个非常棒的功能,但它是怎么做到的呢?
其实,这是ILDasm的一个限制,当你在程序中制造某个标志后,那么程序集将不可以再被ILDasm反编译,ILDasm会提示您,这个程序集已经是一个被有版权的程序集,您不可能对其反编译。呵呵,我们最可爱的ILDasm会罢工?
我曾经找过相关资料,不过没有找到有什么最简单的方法让自己的程序集变成已有版权的程序集,XenoCode有这样做,不过我不想去分析它。如果有知道的朋友,请与我交流一下
那么我们今天的任务是什么呢?就是把罢工的ILDasm拉回来,让它继续为我们工作。
OK,分析一下吧:经过短暂的分析,让我出了一身汗。。。这样的版权保护有还不如无,一定误导了很多朋友。
为什么我这样说呢?因为我发现,想让ILDasm再次工作,比想象中的简单很多,这根本就档不住任何东西。请看下面我跟踪的代码:

 

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

这已经很明显了,ILDasm只用了一个标志去阻止"已有版权"的程序集,而您只需要修改一个机器指令就可以畅通无阻的反编译任何程序集,并修改其内容再次编译
以上代码您可以自己修改,如果您不会,也可以到   下载一个已经修改好的版本。
XenoCode配合强命名的做法,可能从此将会消失
(注:我没有从事过任何。NET程序集的破解,仅仅是看过在ILDasm反编译出来的程序集可以去掉强命名一文,如果有对之处,请指正)

转载地址:http://bwcaa.baihongyu.com/

你可能感兴趣的文章
Using script to submit INV Manager to process MTI/MMTT
查看>>
.net 前台判断
查看>>
【转】.gitignore失效的解决办法
查看>>
中风后遗症当首重治郁——高建忠
查看>>
Linux wget命令
查看>>
QButtonGroup:按钮类的非可视化容器,默认可实现按钮的子类实例的单选。
查看>>
a web-based music player(GO + html5)
查看>>
Python -- 函数对象
查看>>
Task Schedule
查看>>
Spring MVC 数据绑定(四)
查看>>
Java遇见HTML——JSP篇之JavaBeans
查看>>
《C++ Primer Plus》第4章 学习笔记
查看>>
yii 项目根目录下需要有assets目录
查看>>
要重定向 IO 流,Process 对象必须将 UseShellExecute 属性设置为 False。
查看>>
C#中Windows Media Player控件使用实例|方法
查看>>
httpclient用getStatusCode
查看>>
3D引擎为什么使用三角形绘制曲面
查看>>
ios入门篇 -hello Word(1)
查看>>
【十五分钟Talkshow】在.NET应用程序中访问Excel的几种方式
查看>>
图数据库titan 和 rexster安装手册
查看>>