DayPilot控件之破解

DayPilot是个非常好的控件,使用起来也是很快能上手,功能也非常强大,有两个版本,官网地址:https://www.daypilot.org/,一个是Pro版是收费的,另一个是Lite版,则是开源免费,我下载的是Pro版,用在了考勤系统上,展示每个人每天的出勤情况,非常直观,不足之处就是时不时会弹出这么一个对话框出来提示”You are using a trial version of DayPilot Pro“,还有左上角会显示Demo字样。于是就想着怎样将Demo和这个对话框去掉。过程非常曲折,其中学到了不少知识,最终还是达成了目标。

 

 

 

去掉Demo相对比较简单,这个很快就实现了,在页面的最后加一段Script强制将Demo字样换掉就行了

 $(".scheduler_white_corner_inner").next().html("***");

 一开始用反编译工具查看这个dll的代码,发现并没有混淆处理,代码基本都能看到,于是按关键字"You are using a trial version of DayPilot Pro"在整个项目里查找,发现根本找不到,是不是觉得很神奇,项目里没有这段文字,怎么页面会显示这段文字呢?

于是想到了js文件可能被加密,在https://www.sojson.com/网站上将项目的DayPilot.Resources.Scheduler.js文件进行解密,原形就暴露了。

his.$gU = function() {  
  this.nav.top.dispose = this.dispose;
  window['eval']("var lh=location.hostname;if(!~lh.indexOf('daypilot.org')&&lh!=='localhost')setTimeout(function(){alert('You are using a trial version of DayPilot Pro.')},100000*(Math.random()*6+6));"); };

这一段很好理解了,原js中都是用16进制表示的,特意放在eval函数里,比如eval这四个字符对应的就是\x65\x76\x61\x6c,在js运行环境里执行以下代码就可以将这些16进制转为字符

String.fromCharCode(parseInt(arr[i], 16));

找到了这里,接下来就想是不是将这段代码删掉就行了,于是用Reflexil插件将以上函数全部删除,保存,这时才发现这个dll是强命名的,修改后无法保存。

强命名怎么办,在http://www.reteam.org/tools.php网站上找到了RE-Sign工具,自已用sn工具生成一个Key,然后强制为这个dll用新的key强命名,这样在反编译保存时就可以用新的Key保存了。这个工具有环境要求,我在Win7上还运行不了,还好找了一台WinXP的机器能够顺利运行,界面如下

 

这里说下sn工具,-T参数可以查看dll的公钥标记 -k可以生成key。

反编译工具修改后保存时选择第二个选项,用之前生成的key Re-sign.

 

 以上技术点都打通后就简单了,在alert语句前加上return;使alert语句永不执行,这样破解就完成了。

有需要的朋友们可以联系QQ:24092219.

posted @ 2020-06-05 11:15  大海胸懷  阅读(902)  评论(0编辑  收藏  举报