最近在写项目的时候正好涉及到The,顺手整理了一下相关资料。
Found this helpful? Share it with your team and leave a comment below!
正文
JavaScript中虚拟化混淆的秘密指南
嗯,现在我发布了,这已经不是什么秘密了。但无论如何,您可能会喜欢它。
在这篇博客文章中,我将向您介绍JS中虚拟化混淆的基础知识以及如何设计指令集以使其全部工作。这篇文章的灵感来自
在那里,我构建了一个编译器和虚拟机,用于虚拟化混淆。
虚拟化混淆是一种最先进的混淆方案。它通过将代码编译成字节码来混淆代码,然后由虚拟机( VM )执行。因此,虚拟机与编译的字节码一起分发。然后使用此字节码调用并执行它,从而执行实际代码。
展示如何部署虚拟化混淆
由于字节码通过指令执行指令,因此原始代码永远不会在任何地方恢复。因此,任何潜在的攻击者都必须首先对虚拟机进行反向工程,这可能会造成严重的混淆。然后,必须先了解底层体系结构和指令集,然后才能分析实际的字节码。
由于任何两种虚拟化混淆都有潜在的不同,因此自动化工具的使用受到限制。
在构建虚拟机或字节码之前,您必须考虑如何设计两者。有许多不同的架构。从他们身上获得灵感,或者更好的是,想出一些新的异国情调。
你希望人们不理解它。所以,让它变得复杂和令人讨厌。
Rusty-JSYC的反汇编字节码示例
基于寄存器和字节码本身的文本/数据段。此段是一系列操作。
说明:单字节操作码( op code ) ,即:
操作数表示字符串、数字、数组或寄存器构建虚拟机
这听起来比实际情况要恐怖得多。相信我。
更多内容
除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。
码字不易,觉得有帮助的话点个赞再走~ 如果想了解更多相关内容,可以关注我的博客后续更新。
Reference: The Secret Guide To Virtualization Obfuscation In JavaScript | Johannes Willbold
Comments | NOTHING