解javascript 混淆加密收藏


Posted in Javascript onJanuary 16, 2009

直接手工解密,比想象中的要简单不少,花了不到半个小时就搞出来了。
Js解混淆最关键的部分:
l eval或者document.write、VBS的EXECUTE、execScript之类的可以运行js的函数
l unescape
js的混淆一般有几种方法:
1. 把代码通过escape转换成hex形式的代码,让人看不懂
2. 把代码进行简单的可逆加密,然后提供一个解密函数,通过解密函数把代码解出来,并用eval之类的调用将代码串交给js引擎运行。
3. 过滤掉代码中的注释和空格,修改js代码中的内部函数/内部变量的名称,修改成非常难懂的数字或者很容易混淆的串比如数字0和字母O混合的串,让人很难辨认。
高级一点的办法,自然是把以上几个方法结合起来使用。
因此,还原的办法就是
1.把可见的%XX的字符串用unescape解出来
2.找到eval或者类似的解释函数入口
3.把传入eval的参数字符串找出来
4.如果这些字符串也是hex形式的,用unescape解出来
5.循环2-4的过程,直到找出所有的代码
6.这个时候很可能会发现还有一些变量在解出来的函数中使用,并且这些变量是一些大字符串,这种情况下,这些字符串应该就是被加密了的源码了。在使用他们的函数的最后的适当位置插入代码,显示出他们解密后的字符串,即可得源码。
这里面最需要注意的就是要看清楚变量名称,解密部分的代码很多都是通过类似000O、0O00之类的名称相加而成的,看清楚这些变量的真正名称。
注意要保留函数和变量声明和定义的顺序,避免由于移动位置而导致找不到函数或变量。
另外,混淆工具还会在代码里面添加不少垃圾代码,可以删除之。
如果更强一点的混淆工具,还可以在产生的类似垃圾代码的代码中插入一些有用的代码,用于为下面紧接着的乱码函数提供一些变量,比如解密的key之类,因此要注意不能打乱代码的顺序,如果确认不了是不是垃圾代码,留着先。
看上去方法3最简单也最弱智,但实际上这个方法对我们的影响却最大,尝试阅读没有注释、格式混乱并且有着一堆乱七八糟名称的标识符的代码,对任何一个正常人来讲都是噩梦。不过估计是因为“内部”这个标准不太好判断,有些混淆工具并不提供这样的功能。
另:解网页加密
在地址栏或按Ctrl+O,输入:

javascript:s=document.documentElement.outerHTML;document.write('<body></body>');document.body.innerText=s;

源代码就出来了。不论加密如何复杂,最终都要还原成浏览器可以解析的html代码,而documentElement.outerHTML正是最终的结果。
Javascript 相关文章推荐
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
JavaScript实现继承的4种方法总结
Oct 16 Javascript
18个非常棒的jQuery代码片段
Nov 02 Javascript
基于javascript实现根据身份证号码识别性别和年龄
Jan 22 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
mpvue开发音频类小程序踩坑和建议详解
Mar 12 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
Nov 09 Javascript
js 浮动层菜单收藏
Jan 16 #Javascript
jquery中常用的SET和GET
Jan 13 #Javascript
JavaScript 私有成员分析
Jan 13 #Javascript
js利用Array.splice实现Array的insert/remove
Jan 13 #Javascript
JavaScript delete操作符应用实例
Jan 13 #Javascript
在网页里看flash的trace数据的js类
Jan 10 #Javascript
捕获关闭窗口的脚本
Jan 10 #Javascript
You might like
php获取某个目录大小的代码
2008/09/10 PHP
基于PHPExcel的常用方法总结
2013/06/13 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
three.js 如何制作魔方
2020/07/31 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python中的代码编码格式转换问题
2015/06/10 Python
python检测是文件还是目录的方法
2015/07/03 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
基于python指定包的安装路径方法
2018/10/27 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
python如何变换环境
2020/07/21 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
美发店5.1活动方案
2014/01/24 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
镇创先争优活动总结
2014/08/28 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
百年校庆宣传标语口号
2015/12/26 职场文书
开网店计划分析
2019/07/30 职场文书