程序员人生 网站导航

一招破解混淆后的JavaScript代码

栏目:jscript时间:2014-06-02 20:52:06

  JavaScript不是很给力,想怎么破解就怎么破解!此文章教你的不仅仅是破解方案,还有源码保护意识!

  一、原理:

  JavaScript是解释性语言,没有悬念,它严重依赖游览器。

  不管JavaScript如何混淆,最终浏览器都会知道最真实的代码。

  有朋友提出质疑,混淆方式千千万万,你如果知晓它的混淆方式,并制定出反混淆算法?

  如果你这么想,那就陷入了泥潭,为何不另辟蹊径呢?

  首先,作为成熟的JavaScript产品,混淆是必须的。但是,他必须提供给浏览器反混淆算法,因为用户需要运行。

  而运行这两个字却提供给我无限的契机。我不需要知道反混淆算法,我只要知晓一个接口,

  有IE9->F12的帮助,一切都变的很简单,因为浏览器内核中有我迫切想要的东西。

  有朋友提问,我混淆过后,不给你接口或不给浏览器反混淆算法。

  在我眼里,运行不起来的代码,统统都是废代码,一无是处,我也懒得去破解。

  二、方案:

  当你需要学习一款JavaScript产品的源码,却无情遭到混淆,心情恐怕是糟糕的。

  所以你只能拿到官网例子,然后进一步学习。

  什么?例子?那就好办了,这不就是我想要的接口么?首先记住,只要JS源码里含有throw,那咱们就成功了一大步。

  首先找到这个接口,嗯,参数一切正常。正常?可不是咱们想要的,

  咱真正要做的就是让源代码抛出异常,让Eval Code还原出最真实的代码。

  我故意改一个错误的参数传进去。好吧,源代码已经展现在我眼前。

  三、源码保护解决方案:

  1.混淆前,让变量、方法名不可读:

  阴招啊,绝对的阴招。当人家破解完后你的代码,一眼望去,看一眼都觉得损了阳寿。

  不过,这样做的话,还有一个麻烦,就是你对外开发人员提供的API必须是有意义的,

  要不然谁也读不懂,这期间的映射工作,也非常的复杂。

  2.浏览器厂商配合:

  真正的实现JS源码保护,非浏览器厂商参与不可,妄图用JS全程实现源码保护是不现实的。

  3.杜绝把源码里存在throw

  如果诸位用JQuery或ExtJS,那么尽量throw错误给这些类库,避免让浏览器从源码文件抛出异常。

  

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐