JavaScript 混淆及反混淆代码工具

介绍在我们开始学习反混淆之前 , 我们首先要了解一下代码混淆 。如果不了解代码是如何混淆的 , 我们可能无法成功对代码进行反混淆 , 尤其是使用自定义混淆器对其进行混淆时 。
什么是混淆混淆是一种技术 , 用于使脚本更难以被人类阅读 , 但从技术角度来看 , 它可以发挥相同的功能 , 尽管性能可能会较慢 。这通常是通过使用混淆工具自动实现的 , 该工具将代码作为输入 , 并尝试以更难以阅读的方式重写代码 , 具体取决于其设计 。
例如 , 代码混淆器通常将代码转换成代码中使用的所有单词和符号的字典 , 然后在执行期间尝试通过引用字典中的每个单词和符号来重建原始代码 。以下是一个简单的 JAVAScript 代码被混淆的示例:

JavaScript 混淆及反混淆代码工具

文章插图
1690198624_64be626039ffce836c934.png!small
为什么用混淆?开发人员考虑混淆代码的原因有很多 。一个常见的原因是隐藏原始代码及其功能 , 以防止在未经开发人员许可的情况下重复使用或复制它 , 从而使对代码的原始功能进行逆向工程变得更加困难 。另一个原因是在处理身份验证或加密时提供安全层 , 以防止对代码中可能发现的漏洞进行攻击 。
必须注意的是 , 不建议在客户端进行身份验证或加密 , 因为这样代码更容易受到攻击 。
然而 , 混淆最常见的用途是用于恶意行为 。攻击者和恶意行为者通常会混淆其恶意脚本 , 以阻止入侵检测和防御系统检测其脚本 。
基础混淆代码混淆通常不是手动完成的 , 因为有许多针对各种语言的工具可以自动进行代码混淆 。尽管许多恶意行为者和专业开发人员开发了自己的混淆工具以使反混淆变得更加困难 , 但许多在线工具都可以这样做 。
明文示例
让我们以下面这行代码为例 , 尝试对其进行混淆:
console.log('Hello JavaScript Deobfuscation');
  • 1.
明文运行打印出来是:
Hello JavaScript Deobfuscation
混淆示例
现在 , 让我们混淆我们的代码行 , 使其更加晦涩难懂 。首先 , 我们将尝试使用BeautifyTools来混淆我们的代码:
console.log('Hello JavaScript Deobfuscation');
  • 1.
混淆输出
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\b'+e(c)+'\b','g'),k[c])}}return p}('0.1('2 3 4');',5,5,'console|log|Hello|JavaScript|Deobfuscation'.split('|'),0,{}))
  • 1.
【JavaScript 混淆及反混淆代码工具】我们发现我们的代码变得更加混乱且难以阅读 。我们可以将此代码复制到https://jsconsole.com , 以验证它仍然执行其主要功能:
JavaScript 混淆及反混淆代码工具

文章插图
1690199186_64be6492e6a86c606b98d.png!small?1690199187437
虽然加壳器在降低代码的可读性方面做得很好 , 但我们仍然可以看到它的主要字符串以明文形式编写 , 这可能会揭示它的一些功能 。这就是为什么我们可能想要寻找更好的方法来混淆我们的代码 。
高级混淆工具到目前为止 , 我们已经能够使我们的代码变得模糊并且更难以阅读 。但是 , 该代码仍然包含明文字符串 , 这可能会揭示其原始功能 。我们将尝试一些工具 , 它们应该完全混淆代码并隐藏其原始功能的任何残留 。
#0x1 JavaScript Obfuscator Tool - JS混淆工具有一个在线的混淆工具:JavaScript Obfuscator Tool
一个免费且高效的 JavaScript 混淆器(包括对 ES2022 的支持) 。使您的代码更难复制 , 并防止人们窃取您的工作 。这个工具是一个由Timofey Kachalov创建的优秀(和开源) javascript-obfuscator@4.0.0的Web UI 。
让我们访问https://obfuscator.io 。在单击 之前obfuscate , 我们将更改为:[Strings Transformations]->[String Array Encoding]->Base64如下所示:


推荐阅读