1秒破解 js packer 加密

原文:1秒破解 js packer 加密

其实有点标题党了,不过大概就是这个意思。

进入正题,

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(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;}('(1(){1 4(0){6(0){2 0};2 5};7 3=4();8(3)})();',9,9,'a|function|return|ret|test|123|if|var|alert'.split('|'),0,{}))

类似这样一段代码,高手见了笑而不语,熟悉js的朋友嗤之以鼻,js新人却茫然了,去各种群里问怎么解密。
我教你 1 秒解密 packer加密过的js (应该叫压缩更合适)。

打开谷歌或者火狐浏览器,然后按 F12,接着把这代码复制进去,
最后,去掉开头 4 个字母 eval 然后回车运行下就得到源码了。

chrome

firefox

格式化得到的源码后即可得到:(在线代码格式化 http://jsbeautifier.org/)

(function (){
    function test(a) {
        if (a) {
            return a;
        }
        return 123;
    }

    var ret = test();
    alert(ret);
})();

是不是 so easy ?

当然不是所有乱七八糟的代码都是这样解密的,用这个方法解密有一个特征。
eval 包裹着函数或者其他语句的密文都可以这样做,最常见的就是 packer压缩 了。

packer压缩 的特征是  eval(function(p,a,c,k,e,d)  或者  eval(function(p,a,c,k,e,r)  开头是这些的,用此方法1秒还原。

packer 谷歌翻译:打包机
packed 谷歌翻译:打包 (应该是 "已打包" 的意思)

很明显都不是什么加密,只是早前的一些打包算法而已,现在不推荐使用,效率不高不说,还没有任何安全性。
JS混淆加密压缩 http://tool.chinaz.com/js.aspx
这是站在工具提供的打包,混淆工具。感兴趣的朋友自己去测试下吧。

可能有朋友会说,明明比源码多,怎么能说这是压缩呢?
其实分析下他的算法就会发现,其实他是提取相同字符进行压缩的,所以相同单词越多,压缩率越大,来看个例子:

(function () {
var aaaaaaaaa=1;
aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;aaaaaaaaa;
return aaaaaaaaa;
})();

压缩后:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(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 0=1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;4 0})();',5,5,'aaaaaaaaa||var|function|return'.split('|'),0,{}))

很明显变量aaaaaaaaa被替换成了0,这样就起到了压缩功能,所以用他压缩的前提是重复单词非常多的情况。

比较好的习惯是用 Google Closure,Uglifyjs,YUI Compressor 等工具进行打包压缩(我觉得应该叫编译更为恰当)。
这些工具打包压缩后的代码,优化了语句,把局部变量重命名为 a,b,c 这样的变量,所以大幅度的减小了代码容量。

比如:

(function (){
    function test(text) {
        if (text) {
            return text;
        }
        return 'hehe';
    }

    var ret = test();
    alert(ret);
})();

用 UglifyJS 编译后:

!function(){function a(a){return a?a:"hehe"}var b=a();alert(b)}();

不仅变量变成了 a,b 而且 if 语句也发生了变化,所以叫做编译更贴切。

再来试试刚才那段全是 aaaaa 的代码,用 UglifyJS 编译后就变成一行了:

!function(){var a=1;return a}();

是不是很神奇啊,大量的优化了垃圾代码。

著名的 jQuery 就是用 UglifyJS 编译的,也许你会说不是 grunt 构建的么,是的,但是编译器用的就是 UglifyJS。

好了,今天又水了一篇,而且文不对题,重心变成介绍各种工具了。

在线代码格式化:
http://jsbeautifier.org/

JS混淆加密压缩
http://tool.chinaz.com/js.aspx

在线UglifyJS:
http://marijnhaverbeke.nl/uglifyjs/

在线Closure Compressor:(请FQ)
http://closure-compiler.appspot.com/home

在线YUI Compressor:
http://tool.oschina.net/jscompress

时间: 2024-07-29 04:27:48

1秒破解 js packer 加密的相关文章

破解3个加密JS,重金悬赏

问题描述 重金悬赏破解3个加密JS第一个varjzm="iun";window["x65x76x61x6c"](function(fVS1,mHhpo2,NwrvqwCu3,PMeAHSskG4,ZeZm5,siWeKJR6){ZeZm5=function(NwrvqwCu3){return(NwrvqwCu3<mHhpo2?'':ZeZm5(window["x70x61x72x73x65x49x6ex74"](NwrvqwCu3/mHhp

机器人3秒破解魔方刷新世界纪录

机器人3秒破解魔方刷新世界纪录[环球网综合报道]<每日邮报>3月15日报道,继2011年名叫Cubestormer 2的机器人以5.35秒的时间破解魔方后,它的升级版Cubestormer 3在英国伯明翰"The Big Bang Fair"科技博览会上以3.253秒刷新了吉尼斯世界纪录.报道称,2011年澳大利亚墨尔本斯温伯尔尼理工大学一名学生制作的机器人,以10.69秒的速度破解魔方,成为当时世界上机器人解魔方的最快速度.而此次由工程设计师大卫•戈尔戴和迈克•多布森同科

mybatis-RSA在js中加密,但是后台不能解密,总是在报错

问题描述 RSA在js中加密,但是后台不能解密,总是在报错 RSA在js中加密,但是后台不能解密,总是在报错,data must be longer than 64 bytes,我自己使用java加密解密就不报错,不知道为什么,有知道的没,help me啊 解决方案 你JS加密方式出来的数据格式有问题,你直接打印出来,对比java的看看 还要注意你的JS加密后的数据类型,是字符串还是byte 解决方案二: 参考:http://blog.163.com/linfeng_0212/blog/stat

js的加密代码,如何改为php 的代码?

问题描述 js的加密代码,如何改为php 的代码? 最近做一个android的app需要实现一个异步登陆的过程. 需要登陆的网站登陆是需要对用户密码和验证码加密后验证的.我app用webview可以 获取js加密文本之后加密,在进行登陆.但是这样耗时. 为想在服务器把js加密文档写成php的.请问js加密文档写成php可行吗?或者有什么更好的方法亦或者是js在服务器端运行的好方法? 解决方案 如果你有算法,就可以改写.但是要考虑到从客户端手机到服务器的传输过程中的安全性问题.比如说有人在wifi

link的查询语句,里面包含密码,如何防止用户破解?如何加密link语句?

问题描述 link的查询语句,里面包含密码,如何防止用户破解?如何加密link语句? link的查询语句,里面包含密码,如何防止用户破解?如何加密link语句? 解决方案 不要将密码硬编码到程序中,放在web.config/app.config中,对此加密 参考http://www.cnblogs.com/David-Qian/archive/2009/01/23/1380355.html 解决方案二: 能用配置文件处理吗?保存和读取分别进行加密和解密 解决方案三: 假如用户登录界面,数据库中使

在jsp页面上如何使用MD5.js进行加密

问题描述 在jsp页面上如何使用MD5.js进行加密 在页面上需要对密码输入框进行加密,在jsp页面上如何使用MD5.js进行加密? 解决方案 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>md5加密</title> <script type="text/ecmascript" src="md5.js&qu

Node.js DES加密的简单实现_node.js

常见的加密算法基本分为这几类,1 :线性散列算法.2:对称性加密算法.3.非对称性加密算法 (记记记) 线性散列算法(签名算法):MD5,SHA1,HMAC 比如MD5:即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致. 特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别. 4.强抗碰撞:已知原数据

.net调用JScript脚本及JS url加密解密_实用技巧

.net 使用escape 和 unescape方法: 在 C# 里,使用 escape 和 unescape,添加引用: Microsoft.JScript string strEscaped = Microsoft.JScript.GlobalObject.escape("测试打"); 注意:js的一些函数,在 jscript.net 里,全部放在 GlobalObject 下 同样, 就可以使用 unescape, encodeURI, decodeURI 等等的函数了. 或者S

JS脚本加密方法

js|加密|脚本 本文一共介绍了七种方法 一最简单的加密解密 二转义字符"\"的妙用 三使用Microsoft出品的脚本编码器Script Encoder来进行编码 自创简单解码 四任意添加NUL空字符十六进制00H 自创 五无用内容混乱以及换行空格TAB大法 六自写解密函数法 七错误的利用 自创 在做网页时其实是网页木马呵呵最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝实在让自己的心里有点不是滋味要知道自己写点东西也挺累的......^