最近苏南大叔碰到了一款js加密的程序,名字叫做Obfuscator。效果猛一看上去还不错,至少比单纯的eval加密要难解密一些。那么,这个程序加密的js代码,如何解密呢?这里必须先澄清一个事实,那就是网页端的js都是可以解密的。

苏南大叔:javascript Obfuscator加密的代码,如何解密? - javascript-obfuscator
javascript Obfuscator加密的代码,如何解密?(图5-1)

无论加密成什么样,只要是在浏览器端可以执行,那就是肯定可以解密的。否则,浏览器根本执行不了,对吧?浏览器端本身是自身不支持任何算法的。所以,任何js类的解密的方式就是:模仿浏览器去解读这些代码,Obfuscator也不会例外。

Obfuscator在线加密

下面这个地址是个在线操作的地址。

苏南大叔:javascript Obfuscator加密的代码,如何解密? - javascript-obfuscator-online-demo
javascript Obfuscator加密的代码,如何解密?(图5-2)

有个GUI可以下载,不过需要注册才能使用。

Obfuscator云端解密

大概操作了一下,看上去是调用的webserice,实体代码不在本地。现在的程序员们也是越来越聪明了,关键代码放服务器上,真心是最佳防破解手段啊。知识产权保护最佳选择。看里面的apikey了没有,典型的web服务啊。

苏南大叔:javascript Obfuscator加密的代码,如何解密? - jsobfuscator
javascript Obfuscator加密的代码,如何解密?(图5-3)

当然了,这里http://www.javascriptobfuscator.com/downloads.aspx 还有个好东西,可以集成到你的c#程序里面(下图第二项)。听上去不错。当然,第一项就是上边的gui了,第三项就是个webservice地址。

苏南大叔:javascript Obfuscator加密的代码,如何解密? - jsobfuscator-download
javascript Obfuscator加密的代码,如何解密?(图5-4)

Obfuscator本地解密原理

csharpdemo打开看看,果然不错所料,apikeypassword引入眼帘。代码作者玩了一把好手段。哈哈。真心还是web服务。讲真,这样才更能使这个软件的js加密方式更保险,更有生命力啊。

苏南大叔:javascript Obfuscator加密的代码,如何解密? - jsobfuscator-csharp-demo
javascript Obfuscator加密的代码,如何解密?(图5-5)

obfuscator是比较容易破解掉的,如果您已经决定手工破解。那么,加密原理就是:
把习惯上写的"点"操作符换成"数组"操作符。例如:window.location,它就变成了window["location"]。然后再把这些关键词提出来放在个config变量里面去,然后再做关键词混淆替换。

如果您想依靠工具来破解,那么,您可以试试使用老版本的火狐浏览器+最后一版firebug,里面可以直接解密出结果。不用怀疑,浏览器就是可以识别任何js的加密的。总是evaleval去的,只不过firebug把这一个过程,给显式的显示出来了而已,也就是其自动解密的过程。否则浏览器不识别,也是不能运行的对吧?

结论

当然这个Obfuscator加密比eval加密算法的解密是费劲多了。不过,动动手而已,也蛮简单的说。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。