另类代码保护:把JS代码编译成字节码

当使用NodeJS开发了产品或项目,在交付、给他人部署时,直接提供代码进行部署是很不妥的:JS源代码直接就交出去了!直接就是源码泄露。

为了保护代码、保护自身利益,通用在交付给他人之前,都会进行代码保护。对于JS这类代码,通用的是使用JShaman之类JS代码混淆加密平台,对代码进行保护。

当然也有另类的非主流方式,比如本文,将教给大家一种将NodeJS代码编译成字节码的方式。

下面提供源码级的方案,使用环境也是Nodejs。

1、编译JS代码为字节码

原理是使用V8引擎虚拟机技术进行JS代码到字节码的编译:

2、运行编译后的字节码

3、实测运行

以编译并运行ShareWAF为例,ShareWAF是一款商业的大型WAF(WEB应用防火墙)。

编译前,将ShareWAF主程序复制到Js2ByteCode目录下:

编译为字节码:

查看编译后的jsb文件,可以看到是非可识别代码,更不是JS代码,是字节码

防护效果已经起到了。

运行字节码:

字节码运行效果,跟ShareWAF编译为字节码之前运行效果一样,说明这个方式是可行的。

不过这种方式,也有一定的弊端,比如兼容性,Win系统跟Linux是有差异的;又比如全局变量的传递需要在运行时配置等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200601A0L76N00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券