有读者私信问我JavaScript该怎么实现,今天正好有空写篇文章记录一下。
Want to learn advanced techniques? Check out our premium courses.
正文
提供了一个逐步的方法来探索关键问题,即:什么是混淆代码?
什么是JavaScript混淆?它是如何工作的?
JavaScript中有哪些混淆技巧和指标?
为什么JS混淆往往不足以涵盖某些用例?
熟悉JavaScript和npm是一个优势,但不是深入本指南的必要条件。让我们开始吧!
是一种用于将简单易读的代码转换为新版本的技术,这种新版本对于人类和机器来说都是故意难以理解和逆向工程的。
想象一下这样的混淆:你打电话给朋友安排晚些时候喝咖啡(还记得那是什么时候吗? )。可能的回复如下:
“嗨,不好意思,我今天不行。我得看着孩子们。明天同一时间?”
但让我们想象一下,你的朋友决定稍微混淆一下,用衷心的
“早上好,我向你致以最诚挚的歉意,但是,唉,我现在不行。Haply tom 'row, equal timeth?我不需要照顾自己的孩子,我有。真诚的道歉,我向你道歉。祝你好运。”
嗯,那真是一口气。如果你仔细看看你朋友的莎士比亚回复,很明显整个事情是不必要的复杂。解读消息的含义需要更长的时间,并且存在一些冗余。此外,您的好友添加了一些不相关的详细信息。当然,你可以忍受破译这个无稽之谈一次。但是,如果这成为一件永久的事情,你会继续给你的朋友打电话吗?
虽然这似乎是一个愚蠢的例子,但它包含了与代码混淆中使用的一些技术相同的推理。在下一章中,我们将看到代码混淆的真实示例,希望您能看到相似之处。
虽然(谢天谢地)在人类对话中没有很多混淆的真实例子,但代码的混淆已经存在了很长一段时间–在可追溯到1972年的书中有提到“代码混淆”。
特别是C/C + + (甚至还有混淆C代码的竞争)和Perl。但是
有一种语言,混淆获得了巨大的流行
更多内容
除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。
码字不易,觉得有帮助的话点个赞再走~ 如果想了解更多相关内容,可以关注我的博客后续更新。
Reference: JavaScript Obfuscation: The Definitive Guide | Jscrambler