随笔-64  评论-614  文章-1  trackbacks-1

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

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

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

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

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

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

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

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

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

 

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



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

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

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

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

posted on 2005-05-05 14:32 Jason.NET 阅读(5910) 评论(15)  编辑 收藏 网摘 所属分类: .NET技术随笔

评论:
#1楼  2005-05-06 12:37 | 好 [未注册用户]
说的很不错哟
  回复  引用    
#2楼  2005-05-08 10:28 | Hon Young      
说的不错!
再想问一下,你是利用什么工具修改ILDASM.exe的?
  回复  引用  查看    
#3楼 [楼主] 2005-05-08 14:31 | Jason.NET      
修改ILDASM的工具是UD
  回复  引用  查看    
#4楼  2005-06-29 13:21 | 用好      
小弟无知,Ud是什么啊
  回复  引用  查看    
#5楼  2005-08-02 10:56 | queuber [未注册用户]
ultraedit
  回复  引用    
#6楼  2005-08-05 12:32 | Sunlight [未注册用户]
不知楼主有没有碰到过用ildasm打开一个dll,然后保存到il文件时失败的情况(保存的il文件会比较大,估计6-70m左右)??
  回复  引用    
#7楼 [楼主] 2005-08-05 12:35 | Jason.NET      
有,这种情况,我保存后,变成好几G

一直到报内存不足为止

那是作者用了一点点小花招
  回复  引用  查看    
#8楼  2005-08-12 22:15 | 九尾银狐      
我的情况是crash,不过应该是用同一个漏洞。有汇编逆向基础,简单修改一下ildasm就解决了。
  回复  引用  查看    
#9楼  2005-09-21 09:39 | Marksoft.NET [未注册用户]
那这样, 不就没有版权可言了吗? 寒那....
  回复  引用    
#10楼  2005-10-12 23:17 | antisky [未注册用户]
^_^,我前天破了一个.net的程序,用Reflector反编译程序就像看源码,晕。.net程序真的需要使用混淆技术啊。
  回复  引用    
#11楼  2005-11-04 17:33 | xolox [未注册用户]
ildasm根本就打不开某些.net程序,但用reflector就正常,据说是PropertyMap的问题,有清楚的朋友请告诉一声
  回复  引用    
#12楼 [楼主] 2005-11-05 13:36 | Jason.NET      
是的,让 PropertyMap 指向一个错误值,会使使用 CLI api 的反编译程序蹦溃

但是,还有一个好象是 Ildasm 留下的保护接口,就不得而知了
  回复  引用  查看    
#13楼  2005-11-07 09:58 | xolox [未注册用户]
在我自己的程序里,用什么代码才能使得程序存在PropertyMap呢?
  回复  引用    
#14楼  2006-11-26 05:32 | DamnedMoon [未注册用户]
使用过Xenocode的程序集,用ildasm 2.0可以成功打开,但是如果用ilasm 2.0重新组装,就会报错。有没办法能解决?
  回复  引用    
#15楼  2007-04-30 16:57 | 皮永才 [未注册用户]
有2.0版本的破解吗,谢谢了哦
  回复  引用    




标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-05-05 14:39 编辑过
Google站内搜索
[推荐职位]上海盛大网络招聘架构师

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: