解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 相关文章推荐
jQuery function的正确书写方法
Aug 02 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
javascript实现仿腾讯游戏选择
May 14 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
JavaScript获取对象在页面中位置坐标的方法
Feb 03 Javascript
微信小程序 教程之引用
Oct 18 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
Jquery-data的三种用法
Apr 18 jQuery
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
uni-app实现点赞评论功能
Nov 25 Javascript
javascript实现拖拽碰撞检测
Mar 12 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
php5 图片验证码实现代码
2009/12/11 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
2016/01/18 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
package.json文件配置详解
2017/06/15 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
2020/11/06 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
django自带serializers序列化返回指定字段的方法
2019/08/21 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
玩具公司的创业计划书
2013/12/31 职场文书
王老吉广告词
2014/03/20 职场文书
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
生日寿星公答谢词
2015/09/29 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS