如何解析被压缩过的Js文件?eval(function(p,a,c,k,e,d){.....,{}))

原创 2007年09月12日 18:43:00

随着ajax的流行,大家一下子明白过来,原来js能够完成这么强大的功能,然后就是JS代码原来越复杂,js文件体积越来越大,同样也增加了安全隐患。

现在网上比较普遍的流行一些代码混淆和代码压缩工具:

 

JSConfusion    代码混淆工具,本人做的Big Smile

Javascript compressor  代码压缩工具,提供了一种特有的压缩算法对JS的代码进行减肥,也是我看到较早的一个工具,现在经常和JSConfusion结合去使用(当然是先混淆后压缩)

JSObfuscator  集混淆/压缩一体的工具,虽然功能比较多,但在压缩的时候效果不是很好,经过我测试会有时压缩过的代码不能运行

这些是见过的比较好的几个工具,如果你还见过哪些不错功能类似的工具,可以在后面补充~~~~ 

大家应该都知道这样一个理论:加密可以反加密,而混淆却无法反混淆.

混淆也可以叫颠倒是非、混淆黑白,无非就是去掉缩进、空格、空行和注释,改表代码中的非保留字为简单的字母、符号、乱码什么的,这样做只是为了加大代码的阅读难度,提高阅读成本,所以反混淆只有根据你对JS的了解程度去进行变量/方法/属性/类的替换。当然代码少你到是可以这样做,如果代码很多(可以看这个混淆后的项目),你就会知道什么叫 "生气、愤怒、疯狂、哭笑不得"

上面为基础知识,下面进行正题:

alert("Welcome idoall.org");

被压缩过以后是下面的样子:

eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--)d[ c]=k[ c]||c;k=[function(e){return d[  e]}];e=function(){return'//w+'};c=1};while(c--)if(k[ c])p=p.replace(new RegExp('//b'+e(c)+'//b','g'),k[ c]);return p}('3("2 1.0");',4,4,'org|idoall|Welcome|alert'.split('|'),0,{}))

那么我们如何从压缩过的代码中提取出原文?

不管她会压缩混淆成什么样子,最终都是要被浏览器认可,解析,执行的。我们可以跟踪代码的运行,会发现最关键的位置在这里.....p=p.replace(new RegExp('//b'+e(c)+'//b','g'),kCoffee);return p

这里的变量 p 就是用来保存最终后的代码,我们可以在返回 p 的前面将值输出,就会得到alert("Welcome idoall.org");

 

轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码

这里解码百度访问统计代码构造函数为示例: 百度访问统计代码JavaScript源码: 红色加粗部分将是要修改的地方. eval(function(p,a,c,k,e,d){e=functio...
  • cainiaoxiaozhou
  • cainiaoxiaozhou
  • 2013年05月22日 15:18
  • 10604

关于eval(function(p,a,c,k,e,d)以及unicode的解码练习

例如如下代码: eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toStri...
  • a98006aa
  • a98006aa
  • 2015年04月30日 13:40
  • 1778

eval(function(p,a,c,k,e,d)解码工具

  • 2009年05月31日 11:53
  • 2KB
  • 下载

解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码

引用 :http://hi.baidu.com/xcb521/blog/item/2ac50dc6253c79d6d1006073.html这里解码百度访问统计代码构造函数为示例:百度访问统计代码Ja...
  • Vange
  • Vange
  • 2010年04月19日 17:21
  • 12633

JS eval(function(p,a,c,k,e,r){e=function(c)*****解密

http://www.cnblogs.com/dudumao/archive/2012/10/05/2712156.html
  • lcathm
  • lcathm
  • 2014年03月23日 13:03
  • 1525

关于js eval 的解密方法

首先,贴个网址 http://www.jb51.net/tools/eval/,在这里可以对一般的 eval 加密的 js jin...
  • superwfei
  • superwfei
  • 2014年07月15日 18:53
  • 5041

爬zoomeye遇到的坑和解决方案

坑一: https的加密方式是TLSv1.2,这个导致很多以前的爬虫都不能用了,解决方法是用python 的ssl库代码如下: 参考的文章:http://www.cnblogs.com/vingi...
  • niexinming
  • niexinming
  • 2016年02月14日 12:12
  • 2837

用Js的eval解析JSON

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数。 2. 使用Function对象来进行返回解析。 使用eval函数来解析,并且使用jq...
  • piaoxuan1987
  • piaoxuan1987
  • 2013年01月02日 16:58
  • 12810

关于js eval 的解密方法 二

之前的代码稍微有点小问题,显示解码后的信息不完整,从新调整了一下,并且,现在也支持在代码中使用 /*....*/ 进行填充的JS代码解密...
  • superwfei
  • superwfei
  • 2014年08月08日 11:00
  • 1853

【小程序】eval被禁,代替方法

之前写的计算器小程序昨天发现不好用了 调试下发现竟然报错说eval不能用了:eval is not a function 原来eval方法被小程序禁掉了。解决方法: 引入rpn.js 用里面的 ...
  • Maximus_ckp
  • Maximus_ckp
  • 2017年10月26日 12:08
  • 569
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何解析被压缩过的Js文件?eval(function(p,a,c,k,e,d){.....,{}))
举报原因:
原因补充:

(最多只允许输入30个字)