JS `Decompiler` (反编译器) 对 JavaScript `Bytecode` 的还原

各位靓仔靓女,晚上好!我是今晚的主讲人,很高兴能和大家一起聊聊JS Decompiler这个有点神秘,但又超级实用的工具。今天咱们就来扒一扒它的底裤,看看它到底是怎么把JavaScript Bytecode“复原”成我们能看懂的JavaScript代码的。 啥是JavaScript Bytecode? 在深入Decompiler之前,咱得先弄明白JavaScript Bytecode到底是何方神圣。简单来说,它就是JavaScript引擎(比如V8、SpiderMonkey)在执行JavaScript代码之前,先把代码编译成的一种中间表示形式。你可以把它想象成一种机器更能理解的“暗号”,但又不是直接的机器码。 为什么要搞这么个东西呢?原因很简单,效率!直接执行JavaScript源码太慢了,编译成Bytecode之后,引擎可以更快地执行,优化也更容易。 源代码: const sum = (a, b) => a + b; console.log(sum(1, 2)); 简化版Bytecode (V8为例,实际更复杂): LdaSmi 1 // Load Small Integer …