解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 相关文章推荐
qTip2 精致的基于jQuery提示信息插件
Feb 17 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
Jan 23 Javascript
javascript随机之洗牌算法深入分析
Jun 07 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
Javascript中的apply()方法浅析
Mar 15 Javascript
jQuery+CSS3实现3D立方体旋转效果
Nov 10 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
jquery判断iPhone、Android设备类型
Sep 14 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
May 30 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 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
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
分析JavaScript数组操作难点
2017/12/18 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
python学习数据结构实例代码
2015/05/11 Python
python引用DLL文件的方法
2015/05/11 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
Python 登录网站详解及实例
2017/04/11 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
Python3爬虫全国地址信息
2019/01/05 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
2019/12/18 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
高中政治教学反思
2014/01/18 职场文书
参观考察邀请函范文
2014/01/29 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
群众路线四风问题整改措施
2014/09/27 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
CSS实现章节添加自增序号的方法
2021/06/23 HTML / CSS
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
详解flex:1什么意思
2022/07/23 HTML / CSS