如何击败混淆的 javascript 代码的反混淆?

Sai*_*ddy 5 javascript obfuscation deobfuscation

这是一个通用问题

我在一些网站上看到过 javascript 被混淆了

当您尝试使用标准反混淆器(deobfuscatejavascript.com、jsnice.org 和 jsbeautifier.org)对代码进行反混淆时,代码不容易反混淆

我知道实际上不可能避免反混淆。我想让攻击者很难对其进行反混淆

请建议我可以实现这一目标的一些方法

我应该编写自己的混淆器,然后使用另一个在线混淆器混淆输出。这能打败它吗?

提前致谢

PS:我尝试了谷歌闭包编译器、​​uglifyjs、js-obfuscator 和一堆其他工具。它们(单独或组合使用)都无法击败反混淆器

dea*_*ndi 1

您列出的公共反混淆器仅使用简单的eval()后跟美化器来对代码进行反混淆。这可能需要运行几次。它之所以有效,是因为大多数混淆器都会做他们的事情,并在最后添加一个函数来对其进行足够的反混淆,以允许引擎运行它。在大多数情况下,它是一个简单的字符替换(一种凯撒密码),并且eval()足以获得一些代码,然后由美化器或多或少地可读。

回答你的问题:你可以通过使用某种使用代码得到的密码的“加密”来使其变得更难(“更难”是指将其放入反混淆器中不再起作用)在第一轮反混淆后从服务器获取,并使用浏览器完成的相对路径而不是完整路径。这需要人工干预。以复杂且不明显的方式构建这条路径,对于普通的脚本小子来说具有威慑力。

一般来说:您需要一些不在脚本本身中的东西来对脚本进行反混淆。

但要注意:它只回答你的问题,也就是说,它使得不可能通过简单的 c&p 去混淆到这些公共去混淆器之一,而不是更多。有关更复杂的内容,请参阅 Ira 的答案。

请注意混淆代码的原因:

  • 隐藏恶意意图/内容
  • 隐藏被盗的代码
  • 隐藏坏代码
  • 尖头发的老板/投资者
  • 其他(我知道那是什么,但我太客气了,不敢说)

现在,如果人们看到你混淆的代码,他们会怎么想你的投资者坚持要给你钱来写那个人人都喜欢的小浏览器游戏?