HTML5应用采用的仍然是Javascript、HTML、CSS 等Web语言,因而其代码保护就是这些Web页面中运行的javascript代码,而HTML5应用主要功能一般采用JS实现,因此JS代码就成了保护重点。然而,似乎Web语言的设计者们根本没考虑过保护代码,或许因为他们认为互联网的核心价值不是代码,而是业务数据、是流量,这样更有利于互联网Web服务的发展。但开发者似乎不这么认为。我和开发者交流BAE/Widget/HTML5等话题时,必不可少的问题就是如何保护代码。代码保护是许多Web开发者的一块心病。Web语言是解析执行,即代码需要明文下载到客户端(如浏览器),同时可以很容易的进行调试,因而代码保护比较困难。当然,也有一些解决方案是将Web代码编译成二进制文件,但由于这方面没有业界规范,其通用性成问题,不同的浏览器可能会有不同的执行效果,甚至在有的浏览器中无法运行。


怎样保护javascript代码?


目前javascript开发中混搭应用模式(native+html5)大行其道,给了这种代码保护方法很好的生存环境。即:可以将负责解析经过加密或编译的Web代码与解析模块一起打包成Native应用。当然,最流行、折中的HTML5代码保护办法仍代码混淆,而由于应用的主要功能一般通过javascript实现,因而这里主要介绍JS代码的混淆加密保护。代码混淆简单地说是对代码进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,但难以阅读,再加上对明文字符串等进行加密。一般javascript代码混淆加密器会将代码中的所有变量、函数、类的名称变为简短的英文字母代号,删去代码注释,使控制流平展化,高级一些的,更会加入md5\base64加密、阵列加密等等,以及一些反调试手段。

在国内,最为大名鼎鼎的当属JShaman,意为JS萨满,即:JShaman = JS + Shaman。
在传统的世界观,或游戏概念中。萨满巫师具有治愈、辅助、守护的含意。那么“JS萨满”的寓意为:治愈JS代码公开透明的缺陷、辅助JS开发、守护JS产品。
其官网地址为:http://www.jshaman.com
JShaman提供javascript代码在线保护服务,是一个在线javascript代码保护平台,分为免费版和收费版,可以免费试用,也可以付费使用更高端的功能。他们的一个特色功能叫作多态变异,可以将javascript代码提交、交给JShaman平台托管,当远程引用或调用时,每次获取到的都是不一样的代码(当然功能是一样的),可以起到防止调试、防止破解的功能。