我需要一个Javascript文字语法转换器/deobfusation工具
I need a Javascript literal syntax converter/deobfuscation tools
我在谷歌上搜索了转换器,但没有找到任何东西。有没有可用的工具,或者我必须制作一个来解码我的模糊JavaScript代码?
我想有这样一个工具,但我没有用正确的关键词搜索谷歌。代码有3页长,这就是为什么我需要一个工具。
以下是代码示例:
<script>([][(![]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(![]+[])[!+[]+!+[]]]()[(!![]+[])[!+[]+!+[]+!+[]]+(+(+[])+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+!+[]+[+[]]]+(![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]])(([]+[])[([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+
感谢
这段代码很吸引人,因为它似乎只使用了九个字符("[]()!+,;
"和空格U+0020
),但却有一些复杂的功能。它似乎使用JavaScript的隐式类型转换将数组强制转换为各种基元类型及其字符串表示,然后使用这些字符串中的字符来组成其他字符串,这些字符串键入随后调用的函数的名称。
考虑以下代码段,该代码段评估为数组过滤器函数:
([][
(![]+[])[+[]] // => "f"
+ ([![]]+[][[]])[+!+[]+[+[]]] // => "i"
+ (![]+[])[!+[]+!+[]] // => "l"
+ (!![]+[])[+[]] // => "t"
+ (!![]+[])[!+[]+!+[]+!+[]] // => "e"
+ (!![]+[])[+!+[]] // => "r"
]) // => function filter() { /* native code */ }
这样重新构建代码既耗时又容易出错,因此显然需要一个自动化的解决方案。然而,这段代码的行为与JavaScript运行时绑定得如此紧密,以至于去模糊它似乎需要一个JS解释器来评估代码。
我还没能找到任何能普遍使用这种编码的工具。似乎你必须进一步研究代码,确定任何使用模式(例如,对数组方法的依赖),并找出如何捕获它们的使用(例如,通过包装高级函数[如Function.protype.call])来为你跟踪代码执行。
这个问题已经有了公认的答案,但我仍然会发帖澄清一些问题。
当这个想法出现时,有人制作了一个生成器,以这种方式对JavaScript进行编码。它是基于做[]["sort"]["call"]()["eval"](/* big blob of code here */)
。因此,您可以通过删除排序调用eval部分(即前1628个字节)来轻松解码此编码器的结果。在这种情况下,它产生:
if (document.cookie=="6ffe613e2919f074e477a0a80f95d6a1"){ alert("bravo"); }
else{ document.location="http://www.youtube.com/watch?v=oHg5SJYRHA0"; }
(有趣的是,这段代码的创建者甚至无法正确压缩并保存千字节)
还有一个解释是为什么这个代码在新的浏览器中不再工作:他们更改了Array.prototype.sort
,所以它不返回对window
的引用。据我记忆所及,这是获得对window
的引用的唯一方法,所以这段代码现在有点崩溃了。
- 添加文字和评论功能更新Div
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- "未终止的模板文字“;当文字包含脚本标记时出现语法错误
- 对象文字语法怪异
- 为什么我得到“;非法字符语法错误未终止的字符串文字“;当我使用javascript时
- 如何判断对象是使用“Object.create”还是使用文字语法/“new”关键字创建的
- 在缓存对象文字中的元素时使用find()的语法
- JSON语法-变量被解释为文字
- 为什么拥有`<脚本>`在字符串文字中导致JS语法错误
- 对象文字之外的JS冒号语法
- 我需要一个Javascript文字语法转换器/deobfusation工具
- JavaScript 对象文字语法错误
- 使用对象文字表示法创建对象的有效Javascript语法是什么?
- 关于文字对象语法的限制
- javascript中的十进制浮点文字语法
- ${}模板文字(ES2015)与JSP EL语法冲突
- 在 JavaScript 中嵌入 php 变量时出现“语法错误:未终止的字符串文字”错误
- javascript语法错误:字符串文字未终止