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