从混淆的javascript代码创建javascript代码

时间:2010-06-24 11:43:06

标签: javascript obfuscation

我想知道是否可以重现混淆的javascript代码(从混淆的javascript代码创建javascript代码)。

我的网站上有一些javascript代码。我想阻止其他人编辑它。为此我用户混淆。所以我想知道,是否可以从混淆的代码中创建原始的javascript代码。

3 个答案:

答案 0 :(得分:3)

您可以使用像JavaScript beautifier这样的代码格式化工具将代码带回或多或少可读的结构。但是,不可能从压缩变量中重新构建有意义的变量名,所以最终,这是不可能的。它不是一件好事 - 这是混淆代码的重点,不是吗?

答案 1 :(得分:3)

将混淆的代码转换回运行的有效javascript是相当简单的 - 通常你只需要扩展一堆eval次调用。

正如其他人所说的,棘手的部分是给变量命名,以便你可以找出像v7 = a4.l2(h8, n1, p9)这样的东西。我发现有用的东西是从“边缘”开始(无法重命名的库调用“然后尽可能地重命名事物。你会经常发现这些知识然后在代码中涟漪,使它变得更容易抓住下一层并给它一个明智的名字。

例如,如果你有这样的代码:

z4 = "a";
o0 = "href"

...

pr = window.document;

...

q8 = pr.getElementByTagName(z4)[0];

...

function rr(o8, em)
{
   return o8.getAttribute(em);
};

...

y5 = rr(q8, o0);

然后最后一行最初是不可穿透的,但如果您决定rr可以被称为getNamedAttribute,请将z4重命名为LITERAL_A,将o0重命名为{ {1}}和LITERAL_HREFpr;然后我们可以看到documentq8的结果,因此我们可以将其称为document.getElementByTagName(LITERAL_A)[0]。然后是firstAnchor,突然间它很清楚它是第一个超链接的(字符串)目标。

由于此转换需要代表读者进行推理,因此这不可能是一个自动过程(对于完全,编译器不会就不适当的变量名称发出警告的原因相同)

答案 2 :(得分:0)

如果你只有一个混淆的代码并且想要修改/理解它,你唯一能做的就是缩进它以使它更具可读性,然后从过程的开始开始并自己重命名函数和变量弄清楚每个人的目的和功能是什么。这是一个耗时且缓慢的过程,可能非常棘手。