有的时候有些网站的js用简单的eval混淆加密了.解密其实很简单的

解密JS的eval加密码的方式
例如这段:

很多朋友以为这段代码是“加密”的,其实这也谈不上是加密,只能算是一种编码(Encode)或者也可以成为是一种打包(packer),类似于base64这样的编码,都是可以以一定方式还原的,当然也就是“解密”了。

我们仔细分析这一段代码,不难发现代码开头都是eval,特征字符串是function(p,a,c,k,e,r)或者是function(p,a,c,k,e,d),其实这样的pack方式是dean edwards提出的,

你可以访问其个人主页以获取这方面的最新信息。后来还有一些编码打包方式也是eval开头,但是特征字符串p,a,c,k,e,r(d)改变了,我们姑且称为是这种打包方式的一个变种吧,其实解码很简单,我们回顾一下JavaScript脚本中eval含义及用法。

其实就是调用JavaScript分析解释器处理有效的js脚本字符串,注意我这里提到的是字符串,有点类似于ASP的Execute方法。好,既然eval执行的字符串,那么function(p,a,c,k,e,r)函数肯定返回的是字符串,究竟是什么内容呢?你猜对了,就是我们要解码的源代码,其实function(p,a,c,k,e,r)相当于是个自解码函数,返回的就是解码好的源代码,然后传递给eval,那么这段解码后的字符串脚本就执行了。

到这里,突破点就有了,那就是function(p,a,c,k,e,r)这样的自解码函数,我们要获取其返回的字符串,怎么办?很简单,替换eval函数就可以了,比如替换成alert或者document.write,那么明文是不是显示出来了?刚开始讲到的代码可以变成这样:

检查 JavaScript 代码并执行。
eval(codeString)
必选项 codestring 参数是包含有效 JavaScript 代码的字符串值。这个字符串将由 JavaScript 分析器进行分析和执行。

很好,原文已经显示出来了,我们可以喝口水了,不过这样也不是很方便的哎,所以我专门写了个在线eval解密解码unpack的工具,大家可以访问这里来使用,哦,对了,针对多层编码的情况,我这里主要是判断开头eval实现的,另外还加入脚本格式化功能,便于解码后代码的阅读。(据网友反映:该在线工具目前在IE9和最新版FF6下工作正常,其他浏览器可能会有问题。不过我会尽快调查以解决该问题!)

以上参考内容出自http://wangye.org/blog/archives/225/

关于js加密解密的更多相关文章

  1. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  2. 关于HTML或JS加密解密的七种方式

    本文一共介绍了七种方法:   一:最简单的加密解密   二:转义字符""的妙用   三:使用Microsoft出品的脚本编码器Script Encoder来进行编码    (自创简 ...

  3. JAVASCRIPT加密方法,JS加密解密综述(7种)

    一:最简单的加密解密 对于JAVASCRIPT函数escape()和unescape()想必是比较了解啦(很多网页加密在用它们),分别是编码和解码字符串,比如例子代码 用escape()函数加密后变为 ...

  4. js加密解密 base64

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title> ...

  5. js 加密解密 TripleDES

    <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF ...

  6. web前端url传递值 js加密解密

    一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...

  7. RSA JS 加密解密DEMO

    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script&g ...

  8. js加密解密

    <script> document.write("<xmp>"); document.write(function(p,a,c,k,e,r){}(''.sp ...

  9. JS七种加密解密方法

    http://www.cnblogs.com/mq0036/p/4983858.html HTML或JS加密解密 本文一共介绍了七种方法:   一:最简单的加密解密   二:转义字符"\&q ...

随机推荐

  1. PHP超全局变量数组

    以下8个变量都是数组变量,又称为“预定义变量” 1.$_GET : 把数据通过地址栏传递到服务器,这是方式必须是$_GET方式传递: 2.$_POST : 通过表单发送的数据必须是POST方式: 3. ...

  2. 概率dp学习记录

    论文参考 汤可因<浅谈一类数学期望问题的解决方法> 反正是很神奇的东西吧..我脑子不好不是很能想得到. bzoj 1415 1415: [Noi2005]聪聪和可可 Time Limit: ...

  3. BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2809 [题目大意] 给出一棵树,求出每个点有个权值,和一个乘算值,请选取一棵子树, 并 ...

  4. 【贪心】【堆】bzoj2590 [Usaco2012 Feb]Cow Coupons

    每个物品有属性a,b 考虑在仅仅用光优惠券时的最优方案. 显然是按照b排序,取前K个. 但是我们还要尽可能去取剩余的. 假设朴素地取剩余的话,应该把剩余的对a排序,然后尽量去取. 但是有可能对其用优惠 ...

  5. 【Trie图+DP】BZOJ1030[JSOI2007]-文本生成器

    [题目大意] 给出单词总数和固定的文章长度M,求出至少包含其中一个单词的可能文章数量. [思路] 对于至少包含一个的类型,我们可以考虑补集.也就是等于[总的文章可能性总数-不包含任意一个单词的文章总数 ...

  6. spring boot application.properties乱码问题

    1. 在application.properties 中增加 spring.http.encoding.force=true spring.http.encoding.charset=UTF- spr ...

  7. convirt介绍

    convirt2.0是一款使用python和jquery结合编写的其于web的集中管理xen服务的程序.该程序在xen 社区项目,管理项目中被使用的量很高,convirt开发有开源版本与企业版本,企业 ...

  8. 通过修改VHD文件的位置来提升性能

    昨天用VHD装了一个Win 10的预览版体验了一下,感觉磁盘操作非常慢,便用HD Tune测试了一下,发现速度只有物理硬盘的一半都不到.          这个倒大出我意料之外,由于VHD的便利性,我 ...

  9. jQuery中的Ajax全局事件

    Ajax全局事件 全局事件会在有ajax请求的情况下触发. 方法名称 说明 ajaxStart(callback) Ajax请求开始时执行的函数 ajaxStop(callback) Ajax请求结束 ...

  10. VirtualBox Host-Only 连接设置

    1.VirtualBox连接方式选择:Host-Only.在宿主机windows上会自动新建连接:VirtualBox Host-Only Network. 2.启用宿主机windows的连接共享,此 ...