【问题标题】:Hardest-To-Reverse JavaScript obfuscator [duplicate]最难反转的 JavaScript 混淆器 [重复]
【发布时间】:2011-12-17 08:11:40
【问题描述】:

我正在寻找目前最难反转的 JavaScript 混淆器。如果可以在自己的服务器上运行,则可以加分。性能下降和代码膨胀都很好。

【问题讨论】:

  • 一个接一个地通过多个混淆器运行代码。额外的乐趣!
  • 更好 - 接受客户端代码不受您控制的事实。
  • 您还可以让 javascript 文件导入其他 javascript 文件,如果复制对您来说是个问题,这会使整个过程更加难以拼凑。
  • @Cam:如果有人下定决心,他们会在相对较短的时间内击败任何混淆器。如果他们只是出于好奇而摆弄,即使去掉空格也会把他们吓跑。如果您有秘密并想保护它们,则不要将它们放入 JS 或其他任何客户都可以使用的东西中。如果这样做就像给骗子一把上膛的枪,那么添加一个“用于保护”的混淆器就像仍然给骗子一把枪,但请他们不要使用它。
  • @delnan:我不同意。无需任何混淆,只需几分钟即可破译。但即使对于专家来说,也可能需要几天的时间,具体取决于 js 代码所做的混淆和复杂性。我要说的是,在某些情况下,如果您想在竞争对手/对手能够拿走您的 JS 之前获得短暂的时间优势,那么这几天可能至关重要。我认为一个更好的比喻是你给了一个骗子枪,但它没有上膛,枪库在 5-6 英里外。他们没有车。

标签: javascript


【解决方案1】:

用 Java 编写,然后在 JavaScript 中使用混淆的orto 运行字节码。这需要两层反编译才能理解。

【讨论】:

  • 糟糕,我喜欢这个答案,但这里有一份报告,orto is dead
  • 这可能会使逆向工程变得更加困难。我称之为功能。事实是,即使是 Java 字节码也可以“反编译”,因此您将永远无法获得真正的源代码保护。你所能期望的最好的就是让它变得非常困难,比它的价值更多的麻烦。我回答了a related question关于如何实现那种事情。
  • 优秀的架构讨论,tadman!当我获得足够的信息以获得最终答案时,我会看看是否可以编辑您的答案摘要。
【解决方案2】:

我很好奇你为什么要这样做。混淆不能提供真正的保护。如果您有要保护的东西,请将其移至服务器端,否则,何苦呢。如果您按照应有的方式进行操作并缩小/组合您的 JS,这足以吓跑任何不认真了解您的代码在做什么的人,并且具有启动性能优势。如果它们很严重,那么混淆对您没有帮助。

【讨论】:

  • 混淆当然不是真正的保护。任何认真想知道混淆代码在做什么的人都可以弄清楚。但是,只要使用它的人知道他们得到了什么,这并不意味着它完全没有价值。混淆为逆向工程或重用代码增加了一定程度的复杂性。这种复杂程度提高了谁会费尽心思弄清楚如何对代码进行逆向工程或窃取/借用代码的门槛。一个真正有动力的小偷仍然可以得到它(需要更多的工作),但其他人不会认为它不值得麻烦并会跳过它。
  • 从源代码中删除足够的信息,以将其推到更容易从头开始重新编写它的地步。
【解决方案3】:

JavaScript Code Encrypter And Obfuscator 看起来不错,直到我真正尝试攻击它。花了我大约两分钟。简单的解决方案:

for (i in window) { console.log(window[i]) }

这产生了一堆乱码,而且原始代码也巧妙地结合到一个变量中。

自我提醒:永远,永远,永远,永远不要使用任何你不完全了解的安全性。

【讨论】:

  • 从来没有?好的,我承认我使用 AES-256 并且不知道它是如何工作的 :)
  • @CamiloMartin 你这个傻瓜!开玩笑...
猜你喜欢
  • 2021-12-31
  • 2013-01-01
  • 2013-04-29
  • 1970-01-01
  • 2010-11-01
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
相关资源
最近更新 更多