FC 8E AF 72 9C 4E 4F C6 0A A2 AA BE ) // .)0A...r.NO..... //应删除 在记事本中利用查找功能查找“0x7d4” (2004年),结合前面Reflector反汇编时得到的有关线索,可以确定NineRays.Web.UI.WebControls.FlyTreeView.il中对应Global()的构造函数的IL汇编代码如下:.method private hidebysig specialname rtspecialname static void .cctor() cil managed { // 代码大小 18 (0x12) .maxstack 4 IL_0000: ldsflda valuetype [mscorlib]System.DateTime NineRays.Web.UI.WebControls.FlyTreeView.Global::TRIAL_EXPIRE_DATE IL_0005: ldc.i4 0x7d4 IL_000a: ldc.i4.8 IL_000b: ldc.i4.3 IL_000c: call instance void [mscorlib]System.DateTime::.ctor(int32, int32, int32) IL_0011: ret } // end of method Global::.cctor 将上述代码中的 0x7d4改为我们需要的年份就可以达到我们破解的目的。需要注意的是,新的年份值不可过大,否则可能超出操作系统支持的上限,那就可能出现“万年虫”了。这个值改为2050年就已经足够了,因为人们不可能在四十多年后还在使用这个版本的FlyTreeView,况且到那时,如果微软还侥幸存在的话,恐怕连DOTNET都不知被它淘汰到哪里去了。2050对应的十六进制表示为 0x802,修改后保存NineRays.Web.UI.WebControls.FlyTreeView.il。 接下来就是使用汇编工具ILASM编译破解后的代码了。 在编译之前,我们对也对控件来个数字签名。(强名称不是必需的,也可以不做,但如果不想做的话请将myilasm.bat中的/key:treekey.snk指令删除) 要进行数字签名,首先要使用SN.EXE产生签名密钥。在资源管理器中右击工作目录“FlyTreeView破解”的文件夹图标后在弹出菜单中选择“进入命令行”,然后再DOS窗口键入 sn -k treekey.snk 回车。一个新的“随机密钥对”便存储到了工作目录下的treekey.snk文件中。 接下来便进入实际编译过程了。关闭DOS窗口和Reflector等软件,回到资源管理器,删除工作目录中的NineRays.Web.UI.WebControls.FlyTreeView.dll,然后双击工作目录中的批处理文件myilasm.bat,等编译工作结束,就可以看到一个新的NineRays.Web.UI.WebControls.FlyTreeView.dll出现在工作目录中。 至此,如果之前的工作没有失误的话,FlyTreeView控件的破解工作就结束了。 四、破解后的测试 启动 Visual Studio .NET 2003,打开FlyTreeView示例站点Samples目录中的示例项目Samples.csproj,在解决方案资源管理器中将项目对NineRays.Web.UI.WebControls.FlyTreeView的引用删除,将对破解后的NineRays.Web.UI.WebControls.FlyTreeView的引用添加进来,并顺便将其添加到工具箱中。 重新生成Samples项目后将系统日期向后调整数年,在浏览器中浏览示例站点,你会发现不再抛出异常。 为最后确认破解是否成功,换另外一台机器使用ip地址或域名方式访问该示例站点,一切正常。 至此,FlyTreeView for ASP.NET 3.2 的破解工作结束,如果你有兴趣的话,还可以为破解后的控件再做一个安装部署项目。这就不在本文探讨的范畴了。
上一页 [1] [2] |