转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
FlyTreeView for ASP.NET 3.2 破解攻略         ★★★★

FlyTreeView for ASP.NET 3.2 破解攻略

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1404 更新时间:2009/4/23 10:41:41
  近日对目前较为流行的Asp.Net TreeView 控件的性能进行了测试。如RadTreeView,FlyTreeView,IEWebControlTreeView等。总体感觉,作为一个独立产品,FlyTreeView的外观更为俏丽,性能也最为丰富,可谓精雕细琢。用它遍历服务器硬盘,仿真资源管理器目录的速度是非常快的;它所具有的独一无二的异步加载功能,对那些梦想把全部数据都绑定到一个Web树上,又不想影响客户端加载速度的程序开发者来讲,FlyTreeView切实能使我们鱼肉和熊掌兼得。用过一段时间的IEWebControlTreeView,深感其性能的平平,反应的迟缓,因而一见到FlyTreeView for ASP.NET 3.1 便爱不释手,FlyTreeView for ASP.NET 3.2 出来以后便立即下载了一个。由于试用期过后必须调整“座机”的系统时间才能继续使用,感觉很不方便,便决定自己动手,延长一下试用期,也借机学习一下优秀软件的编制技巧,了解一些书本上得不到的知识。
  一、环境准备
  1、基本环境:Microsoft Visual Studio .NET 200X开发环境和IIS服务。
  2、PATH环境:为方便在命令行上使用有关工具,需要确保更新系统的PATH环境变量。以使系统能在任何目录下都能找到所需的.NET工具。为此,需要将 X:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin和X:\winnt\Microsoft.NET\Framework\v1.1.4322(v1.0.3705)这两个目录的完整路径添加到PATH环境变量字符串的末尾,如(图一):   
  另外,为确保在任何目录下都能进入命令行,须对文件夹的右键菜单添加一个进入命令行的快捷选项。其方法见(图二)。这样,在资源管理器中当对需要进入命令行的文件夹右击鼠标的时候,就会出现图三的画面,选择“进入命令行”即可,免去了手工键入全路径的繁琐过程,见(图三)。     二、工具准备
  1、反编译器:代码分析工具我用的是Reflector 4.1.6.0 的试用版,可从 http://www.aisto.com/roeder/dotnet/下载最新版本,Reflector 可以将目标代码反编译成IL、C#、VB.NET、 Delphi四种语言,可供你根据自己的语言习惯进行选择。 Reflector 试用版装载后如果出现过期问题,可通过调整系统时钟予以解决,当然,也可以试着用Reflector自己把Reflector的代码分析一下将这个问题解决了,但不这样做也不影响我们的后续工作。将控件完整的反编译成破解档的工具就使用环境中已有的Microsoft免费提供的MSIL反汇编器ILDASM。经过第一步的准备,我们已经可以在需要的时候在任何目录中调用它。
  2、汇编程序:使用环境中已有的Microsoft免费提供的MSIL汇编程序ILASM,通过使用 Ilasm.exe 运行我们破解处理过的ILDASM生成的有关文件以生成最终的破解控件。同 ILDASM 一样,经过第一步的准备,我们已经可以在需要的时候在任何目录中调用它。
  3、其他工具:记事本、计算器等,均为系统默认的工具、软件。  三、破解过程
  1、安装FlyTreeView:运行FlyTreeView_for_ASP_Setup.3.2.exe,并注意安装过程中选中安装示例Web应用程序。如(图四):        在浏览器中浏览示例页面,控件未过期时的正常画面如(图五):
   将系统时钟向后调整(如一年)后,再次浏览上述页面,则控件立即抛出异常如下(图六):

   2、控件分析:
  在你喜欢的位置新建一文件夹,姑且起名为“FlyTreeView破解”,作为我们的工作目录;将示例站点bin目录中的NineRays.Web.UI.WebControls.FlyTreeView.dll拷贝一份到工作目录;用记事本在我们的工作目录里再新建两个批处理文件,以方便后续工作,代码如下:myildasm.batildasm NineRays.Web.UI.WebControls.FlyTreeView.dll
/output:NineRays.Web.UI.WebControls.FlyTreeView.il
myilasm.batilasm /dll /resource:NineRays.Web.UI.WebControls.FlyTreeView.res
/output:NineRays.Web.UI.WebControls.FlyTreeView.dll /key:treekey.snk
NineRays.Web.UI.WebControls.FlyTreeView.il

  基本准备就绪后,启动 Reflector 打开工作目录中的NineRays.Web.UI.WebControls.FlyTreeView.dll,如(图七)

      根据以往破解经验及之前破解FlyTreeView for ASP.NET 3.1 的经历,Web控件的试用限制通常是在 New,Render,Init等位置实现。为此,我们直接展开NineRays.Web.UI.WebControls.FlyTreeView中的FlyTreeView类,以(图六)中抛出的异常信息“9Rays.Net FlyTreeView for ASP.NET TRIAL license has expired.” 为线索,逐个浏览该类中的重点方法与函数的反汇编代码,发现异常是在FlyTreeView类的构造函数New()中抛出的,其高级语言代码如下:
C#代 码VB.NET代码public FlyTreeView()
{
this._designPage = null;
this._clientRuntimePath = "/aspnet_client/ninerays_web_
ui_webcontrols_flytreeview_3_2_83_3/";
this._loadingMessage = "Loading...";
this._expandLevel = 0;
this._childIndent = 0x12;
this._SupportIE55 = false;
this._OldSelectedNodeKeyList = null;
this._RestoreValue = null;
this._DefaultNodeType = null;
this._NodeEventsArgs = new ArrayList();
this._SelectedNode = null;
if (DateTime.Now > Global.TRIAL_EXPIRE_DATE)
{
throw new Exception("9Rays.Net FlyTreeView
for ASP.NET TRIAL license has expired.");
}
this._NodeTypes = new TreeNodeTypeCollection();
this._NodeTypes._FlyTreeView = this;
this.Font.Name = "Tahoma";
this.Font.Size = FontUnit.XSmall;
this.BorderStyle = BorderStyle.None;
this.ClientRuntimePath = "/aspnet_client/ninerays_web_
ui_webcontrols_flytreeview_3_2_83_3/";
}

Public Sub New()
Me._designPage = Nothing
Me._clientRuntimePath = "/aspnet_client/ninerays_web_
ui_webcontrols_flytreeview_3_2_83_3/"
Me._loadingMessage = "Loading..."
Me._expandLevel = 0
Me._childIndent = 18
Me._SupportIE55 = False
Me._OldSelectedNodeKeyList = Nothing
Me._RestoreValue = Nothing
Me._DefaultNodeType = Nothing
Me._NodeEventsArgs = New ArrayList
Me._SelectedNode = Nothing
If (DateTime.Now > Global.TRIAL_EXPIRE_DATE) Then
Throw New Exception("9Rays.Net FlyTreeView
for ASP.NET TRIAL license has expired.")
End If
Me._NodeTypes = New TreeNodeTypeCollection
Me._NodeTypes._FlyTreeView = Me
Me.Font.Name = "Tahoma"
Me.Font.Size = FontUnit.XSmall
Me.BorderStyle = BorderStyle.None
Me.ClientRuntimePath = "/aspnet_client/ninerays_web
_ui_webcontrols_flytreeview_3_2_83_3/"
End Sub
   相关截图见(图八):

  显然,关键代码是:If (DateTime.Now > Global.TRIAL_EXPIRE_DATE) Then
  Throw New Exception("9Rays.Net FlyTreeView for ASP.NET TRIAL license has expired.")
End If
   Global.TRIAL_EXPIRE_DATE中保存的应该是控件试用的最后期限,我们只要将Global.TRIAL_EXPIRE_DATE中的期限值向后延长一定年限就可以达到破解的要求了,因为我们毕竟不是要做该控件的注册机,不需要再做更复杂的分析。为此,我们在点击(图八)中蓝色加亮的TRIAL_EXPIRE_DATE,转到静态全局类Global,浏览其相关代码,我们找到了如下关键代码:
语   言代                                          码IL汇编.method private hidebysig specialname rtspecialname static void .cctor() cil managed
{
// Code Size: 18 byte(s)
.maxstack 4
L_0000: ldsflda [mscorlib]System.DateTime NineRays.Web.UI.WebControls.FlyTreeView.Global::TRIAL_EXPIRE_DATE
L_0005: ldc.i4 2004
L_000a: ldc.i4.8
L_000b: ldc.i4.3
L_000c: call instance void [mscorlib]System.DateTime::.ctor(int32, int32, int32)
L_0011: ret
}
C#static Global()
{
       Global.TRIAL_EXPIRE_DATE = new DateTime(0x7d4, 8, 3);
}
VB.NETPrivate Shared Sub New()
        Global.TRIAL_EXPIRE_DATE = New DateTime(2004, 8, 3)
End Sub
Delphiconstructor Global.Create;
begin
          Global.TRIAL_EXPIRE_DATE.Create(2004, 8, 3)
end;
相应的截图见(图九):
    在以上由Reflector反编译出的代码中,以VB.NET和Delphi代码最为直观,它使我们一眼就看出该控件的最后使用期限为2004年8月3日。(不同时间下载或安装的FlyTreeView表现在代码中的截止日期可能不同,笔者未特意考证)
  下一步的工作就是进入实际破解了。
  3、控件破解:
  在工作目录中双击反汇编批处理文件myildasm.bat,工作目录中便出现了反汇编后得出的NineRays.Web.UI.WebControls.FlyTreeView.il等相关文件,见下表:
NineRays.Web.UI.WebControls.FlyTreeView.il
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Iconless.gif
NineRays.Web.UI.WebControls.FlyTreeView.FlyNodeSet.resources
NineRays.Web.UI.WebControls.FlyTreeView.FlyContextMenu.bmp
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Default.gif
NineRays.Web.UI.WebControls.FlyTreeView.Design.AutoFormatForm.resources
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.MSDN.gif
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Night.gif
NineRays.Web.UI.WebControls.FlyTreeView.FlyTreeView.bmp
NineRays.Web.UI.WebControls.FlyTreeView.Design.PreNodeTypesButton.resources
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Office-2003.gif
NineRays.Web.UI.WebControls.FlyTreeView.RelItem.resources
NineRays.Web.UI.WebControls.FlyTreeView.Resources.FlyTreeView.ico
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Windows-XP-Explorer.gif
NineRays.Web.UI.WebControls.FlyTreeView.FlyNodeSet.bmp
NineRays.Web.UI.WebControls.FlyTreeView.Resources.Previews.Classic-Explorer.gif
NineRays.Web.UI.WebControls.FlyTreeView.res
  用记事本打开NineRays.Web.UI.WebControls.FlyTreeView.il,向后翻一至两页可以看到如下代码,这是用于控件签名的公钥,应将其删除,以避免破解后的控件的被GAC踢出去且添加不进工具箱。
.publickey = (00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 // .$..............
       00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........
       07 20 57 CD EB B7 1A 84 93 4B 53 79 1C 47 F2 FA // . W......KSy.G..
       7E AE D6 6A D6 0F 43 77 3C DC 6C 32 89 1D 48 B2 // ~..j..Cw<.l2..H.
       B9 1A 9E E9 25 B2 6A 13 D9 2F 84 32 90 E8 97 44 // ....%.j../.2...D
       E8 2E A2 29 6C BB DC 5A 31 C5 19 46 B9 23 72 96 // ...)l..Z1..F.#r.
       5B D7 3F 0C 0A 2A 10 F3 0E 98 9D 28 31 12 5B 63 // [.?..*.....(1.[c
       EE 08 92 7A 7A 63 F4 2E 96 47 36 79 47 FF 8D 32 // ...zzc...G6yG..2
       8B FA F4 AF 7C 12 84 3D 0B 55 15 B1 D0 2D C2 7C // ....|..=.U...-.|
       C1 29 30 41

[1] [2]  下一页


[系统软件]InstallShield Express for delphi制作安装程序定…  [系统软件](转帖) 忘记登录密码的解决方案 for XP/2003/2000
[系统软件]交叉编译sshd for IXP425 ARM  Platform by MVL 3…  [Delphi程序]《关于VisiBroker For Delphi的使用》(4)
[Delphi程序]一个超链接Image控件!(For D3,D4,D5,D6)源代码  [Delphi程序]Five of the best tools for Delphi
[Delphi程序]《关于VisiBroker For Delphi的使用》(3)  [Delphi程序]《关于VisiBroker For Delphi的使用》(2)
[Delphi程序]《关于VisiBroker For Delphi的使用》  [Delphi程序]Delphi for .Net 编译器预览 - by John Kaster
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台