关于JS加密解密那点事打赏
最近和ucd部分的前端开发有合作,可曾想他们发过来组件什么的都是加密处理过的,事实上组件又不完善,很多小的bug都要给他们定位,很是头疼,果断解密看看。
很多朋友以为JS的加密是不可逆的,其实常见的eval加密也谈不上是加密,只能算是一种编码(Encode)或者也可以成为是一种打包(packer),类似于base64这样的编码,都是可以以一定方式还原的,当然也就是“解密”了。
仔细观察加密JS,你会发现,大部分文件里面都有function(p,a,c,k,e,r)或者是function(p,a,c,k,e,d),据说这样的pack方式是
其实就是调用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或者console.log,那么明文是不是显示出来了?答案是肯定的。
对于大多数情况,单独写个页面去解密,有点麻烦了,所以最好写一个工具页面专门来对付此类JS,或者页面也不想写,只是偶尔想用某个文件,你也可以人为破坏JS,在加密的文件中找到相对关键的字符(比如window,jQuery等等),然后改成一个绝对不等效的字符,丢到需要用到该JS的页面,加载后绝对报错,打开控制台(chrome、高版本IE、Firefox都可以),可以看到错误信息,点进去查看详情,复制出错代码所在的整段代码,改回你刚刚更改的关键字符,再覆盖回加密文件。解密成功。
小小经验,不喜勿喷
- 固定链接:https://www.poorren.com/js-encode-decode-packer
- 文章标签:decode,encode,js,packer
- 扫二维码:关于JS加密解密那点事
- 版权所有:除"转载分享"分类外,未经注明,均为原创、整理,转载请注明出处。
你的博客看起来相当舒服,既来看朋友的博客,当然要留言了。欢迎回访。
原来JS还能加密解密。。
只能算打包