zoukankan      html  css  js  c++  java
  • 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这四个字符对应的就是x65x76x61x6c,在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.

  • 相关阅读:
    Kali-linux物理访问攻击
    Kali-linux使用NVIDIA计算机统一设备架构(CUDA)
    Kali-linux创建密码字典
    Kali-linux破解操作系统用户密码
    Kali-linux破解纯文本密码工具mimikatz
    Kali-linux绕过Utilman登录
    POJ
    LightOJ
    UVa
    Hdu
  • 原文地址:https://www.cnblogs.com/dimg/p/13044131.html
Copyright © 2011-2022 走看看