一招破解混淆后的JavaScript代码
JavaScript不是很给力,想怎么破解就怎么破解!此文章教你的不仅仅是破解方案,还有源码保护意识! 一、原理: JavaScript是解释性语言,没有悬念,它严重依赖游览器。 不管JavaScript如何混淆,最终浏览器都会知道最真实的代码。 有朋友提出质疑,混淆方式千千万万,你如果知晓它的混淆方式,并制定出反混淆算法? 如果你这么想,那就陷入了泥潭,为何不另辟蹊径呢? 首先,作为成熟的JavaScript产品,混淆是必须的。但是,他必须提供给浏览器反混淆算法,因为用户需要运行。 而运行这两个字却提供给我无限的契机。我不需要知道反混淆算法,我只要知晓一个接口, 有IE9->F12的帮助,一切都变的很简单,因为浏览器内核中有我迫切想要的东西。 有朋友提问,我混淆过后,不给你接口或不给浏览器反混淆算法。 在我眼里,运行不起来的代码,统统都是废代码,一无是处,我也懒得去破解。 二、方案: 当你需要学习一款JavaScript产品的源码,却无情遭到混淆,心情恐怕是糟糕的。 所以你只能拿到官网例子,然后进一步学习。 什么?例子?那就好办了,这不就是我想要的接口么?首先记住,只要JS源码里含有throw,那咱们就成功了一大步。 首先找到这个接口,嗯,参数一切正常。正常?可不是咱们想要的, 咱真正要做的就是让源代码抛出异常,让Eval Code还原出最真实的代码。 我故意改一个错误的参数传进去。好吧,源代码已经展现在我眼前。 三、源码保护解决方案: 1.混淆前,让变量、方法名不可读: 阴招啊,绝对的阴招。当人家破解完后你的代码,一眼望去,看一眼都觉得损了阳寿。 不过,这样做的话,还有一个麻烦,就是你对外开发人员提供的API必须是有意义的, 要不然谁也读不懂,这期间的映射工作,也非常的复杂。 2.浏览器厂商配合: 真正的实现JS源码保护,非浏览器厂商参与不可,妄图用JS全程实现源码保护是不现实的。 3.杜绝把源码里存在throw 如果诸位用JQuery或ExtJS,那么尽量throw错误给这些类库,避免让浏览器从源码文件抛出异常。 (本文来源:http://zjyuan.cnblogs.com/) (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |