有读者私信问我aesthetic0001/js-virtualizer该怎么实现,今天正好有空写篇文章记录一下。
Ready to learn more? Subscribe to our newsletter for weekly tutorials and tips.
正文
js-virtualizer是一个概念验证项目,它为javascript带来了基于虚拟化的混淆。在此实现中,字节码被馈送到以javascript实现的虚拟机,该虚拟机在其自己的指令集上运行。包含一个转换器,用于转换选择
到虚拟机的操作码。重要的是要注意, js-virtualizer是
不适用于整个程序,而是用于指定的函数
!如果尝试通过虚拟机运行整个程序,将会对性能造成重大影响(这样做也是不切实际的,因为当前实现不支持真正的并发异步,因此程序中的所有内容都必须同步运行)
您需要通过在文本中添加注释来标记要虚拟化的功能
对于完整示例和一些示例代码的示例文件夹,您可以尝试虚拟化。
//代码的文件名;将用作默认输出文件名
//转译器是否应将输出直接写入文件
//将转译代码的vm写入路径
//是否从指令集中删除未使用的操作码
//是否通过js-confuser对VM代码进行混淆
//是否通过js-confuser的虚拟化代码对转译后的代码进行混淆保存到:
) -代码的文件名;将用作默认输出文件名,其中转译的代码和虚拟机将被写入
) -转译器是否应将输出直接写入文件
) -将vm写入转译代码的路径
更多内容
除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。
篇幅原因就先写这么多,后面有空会再补充更多实战案例。有问题评论区见。
Reference: aesthetic0001/js-virtualizer - GitHub
Comments | NOTHING