1秒破解 js packer 加密

简介: 原文:1秒破解 js packer 加密其实有点标题党了,不过大概就是这个意思。 进入正题, eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.
原文: 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,接着把这代码复制进去,
最后,去掉开头 个字母 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 ClosureUglifyjsYUI 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

目录
相关文章
|
15天前
|
JavaScript 数据安全/隐私保护 Python
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
网易云音乐搜索接口JS逆向: Params、encSecKey加密和AES实战
19 4
|
15天前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
78 1
|
29天前
|
算法 JavaScript 前端开发
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
84 1
|
15天前
|
JavaScript 前端开发 安全
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密
23 0
|
26天前
|
安全 Nacos 数据安全/隐私保护
【技术干货】破解Nacos安全隐患:连接用户名与密码明文传输!掌握HTTPS、JWT与OAuth2.0加密秘籍,打造坚不可摧的微服务注册与配置中心!从原理到实践,全方位解析如何构建安全防护体系,让您从此告别数据泄露风险!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心,但其连接用户名和密码的明文传输成为安全隐患。本文探讨加密策略提升安全性。首先介绍明文传输风险,随后对比三种加密方案:HTTPS简化数据保护;JWT令牌减少凭证传输,适配分布式环境;OAuth2.0增强安全,支持多授权模式。每种方案各有千秋,开发者需根据具体需求选择最佳实践,确保服务安全稳定运行。
65 0
|
29天前
|
JavaScript 数据安全/隐私保护 Python
东方财富股票数据JS逆向:secids字段和AES加密实战
东方财富股票数据JS逆向:secids字段和AES加密实战
56 0
|
JavaScript 前端开发 数据安全/隐私保护
|
JavaScript 前端开发 网络协议
JavaScript加密解密7种方法
from:baiker 本文一共介绍了七种javascript加密方法:  在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^  但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中javascript代码的加密解密技术。
1517 0
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
68 2
|
2月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
60 4
下一篇
DDNS