一招破解混淆后的JavaScript代码
http://www.cnblogs.com/zjyuan/archive/2011/12/14/2287647.html JavaScript不是很给力,想怎么破解就怎么破解!此文章教你的不仅仅是破解方案,还有源码保护意识!
一、原理:
JavaScript是解释性语言,没有悬念,它严重依赖游览器。不管JavaScript如何混淆,最终浏览器都会知道最真实的代码。有朋友提出质疑,混淆方式千千万万,你如果知晓它的混淆方式,并制定出反混淆算法?如果你这么想,那就陷入了泥潭,为何不另辟蹊径呢?首先,作为成熟的JavaScript产品,混淆是必须的。但是,他必须提供给浏览器反混淆算法,因为用户需要运行。而运行这两个字却提供给我无限的契机。我不需要知道反混淆算法,我只要知晓一个接口,有IE9->F12的帮助,一切都变的很简单,因为浏览器内核中有我迫切想要的东西。有朋友提问,我混淆过后,不给你接口或不给浏览器反混淆算法。我给出的答案永远是:运行不起来的代码,统统都是废代码,一无是处,我也懒得去破解。
二、方案:
当你需要学习一款JavaScript产品的源码,却无情遭到混淆,心情恐怕是糟糕的。所以你只能拿到官网例子,然后进一步学习。什么?例子?那就好办了,这不就是我想要的接口么?首先记住,只要JS源码里含有throw,那咱们就成功了一大步。首先找到这个接口,嗯,参数一切正常。正常?可不是咱们想要的,咱真正要做的就是让源代码抛出异常,让Eval Code还原出最真实的代码。我故意改一个错误的参数传进去。好吧,源代码已经展现在我眼前。
三、源码保护解决方案:
①混淆前,让变量、方法名不可读:
阴招啊,绝对的阴招。当人家破解完后你的代码,一眼望去,看一眼都觉得损了阳寿。不过,这样做的话,还有一个麻烦,就是你对外开发人员提供的API必须是有意义的,要不然谁也读不懂,这期间的映射工作,也非常的复杂。
②浏览器厂商配合:
真正的实现JS源码保护,非浏览器厂商参与不可,妄图用JS全程实现源码保护是不现实的。
③杜绝源码里存在throw
一招破解混淆后的JavaScript代码的更多相关文章
- MVC POST请求后执行javascript代码
[HttpPost] public ActionResult PostTest() { //你的业务代码 //...... //要执行的js string js = "window.loca ...
- 【转】使用Jasob混淆javascript代码
在平常的web开发中,我们时常需要写一些js的类库,当我们发布自己产品的时候,不得不把源代码分发出去:但是这样就会泄露自己的代码.今天使用了一下Jasob感觉不错: 使用Jasob,我们的JavaSc ...
- 如何对Javascript代码进行二次压缩(混淆)
如何对Javascript代码进行二次压缩(混淆) 对Javascript代码进行压缩(混淆),可以有效减少传输和加载时间.但是,不是所有的变量(方法)都能被混淆的,一般来说,只有非属性的变量(方法) ...
- JS Nice – JavaScript 代码美化和格式化工具
JS Nice 是一款让经过混淆处理的 JavaScript 代码可读更好的工具.它使用一种新型的用于 JavaScript 代码美化的去混淆和去压缩引擎.JSNice 采用先进的机器学习和程序分析技 ...
- JavaScript 之 解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码
这里以解码百度访问统计代码构造函数为示例: 以下为要统计JavaScript源码:红色加粗部分将是要修改的地方. eval(function(p,a,c,k,e,d){e=function(c){re ...
- Google Closure Compiler高级压缩混淆Javascript代码
一.背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyj ...
- Android 混淆后的代码调试
ProGuard的输出文件及用处 混淆之后,会给我们输出一些文件,在gradle方式下是在<project_dir>/build/proguard/目录下,ant是在<project ...
- JS函数 编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数。
编程练习 使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数. 任务 第一步: 编写代码完成一个函数的定义吧. 第二步: 我们来补充函数体中的控制语句,完成函数功能吧. 提示: ...
- 【转】javascript代码混淆和压缩
隐藏 JavaScript 源代码?不,你只能混淆和压缩JavaScript源代码 http://www.yaohaixiao.com/tools/confuse-and-compressing-ja ...
随机推荐
- SqlServer 2008无法远程连接到服务器
其他的什么先别说,上来第一点,看看服务器防火墙,是否把SqlServer的端口号例外了. 别弄了半天发现防火墙问题,那就得不偿失了. 用户在使用SQL Server 2008远程链接时,可能会弹出如 ...
- 从网络得到数据--Arduino+以太网
昨天我们讨论了如何使用Arduino以太网插板建立服务器,并通过网络控制Arduino的引脚.今天我们来看看用插板做为客户端来从一个网页上得到信息并返回报告.我几个月前用的这个方法,当时我做了一个Ni ...
- JS之RegExp对象(一)
JavaScript提供了一个RegExp对象来完毕有关正則表達式的操作和功能,每一条正則表達式模式相应一个RegExp实例.有两种方式能够创建RegExp对象的实例. 使用RegExp的显 ...
- LT1961 升压型稳压器造就了兼具升压和降压能力的扁平状SEPIC
http://cds.linear.com/docs/cn/design-note/DN317%20sim_chs.pdf http://cds.linear.com/docs/en/datashee ...
- 2016.3 idea 注册码
idea 最新官方版本:2016.3 idea 注册码 1.下载最新idea 下载地址:https://www.jetbrains.com/idea/ 2.安装 Windows 直接下载 .exe 文 ...
- 【Linux编程】进程标识符与fork函数
ID为0的进程一般是调度进程.常被称为交换进程(swapper),是内核中的系统进程. ID为1的进程叫做init进程,是一个普通用户进程,不属于内核,由内核调用. 一个现有进程能够调用fork函数创 ...
- ARM指令集—SWP指令
ARM指令集-SWP指令 SWP和SWPB是ARM指令集中对存储单元的原子操作.即对存储单元的一次读和一次不可被切割. SWP和SWPB分别完毕存储器和寄存器之间 一个字(32bit)和一个字节(8b ...
- IP addr命令
我们都知道Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. 如上图所示命令显示了机器上的所有网卡,大部分 ...
- C# SMTP邮件发送程序
邮件发送在网站应用程序中经常会用到,包括您现在看到的博客,在添加评论后,系统会自动发送邮件通知到我邮箱的,把系统发送邮件的功能整理了下,做了一个客户端Demo,希望对有需要的童鞋有所帮助: 核心代码: ...
- Windows-设置系统服务不开机启动
设置为手动,则开机不会自动启动了