有效的javascript eval(..)在Java下使用ScriptEngine失败

时间:2014-06-25 03:32:21

标签: javascript scriptengine

我有一个在网页中正确执行的javascript eval(...),以及 使用"解包器"正确执行网页工具, http://matthewfl.com/unPacker.html所以我知道了eval(...) 陈述是正确的。

我需要在java下执行那个eval(),所以我使用

加载并执行了javascript引擎
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("js");
result = engine.eval(...)

简单的evals工作正常,但我的更复杂的eval适用于网页 失败了

"missing ) after argument list"

我也尝试过使用带有java8的新nashorn

也失败了
"Caught: javax.script.ScriptException: <eval>:1:737 Expected , but found ));"

我最后的测试是使用java8 jjs nashorn解释器,它也失败了

java.lang.ArrayIndexOutOfBoundsException: -1

以下显示失败的控制台输出。

C:\Users\John>jjs
jjs> eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((
c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String))
{while(c--){d[e(c)]=k[c]||e(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}('K.L(M(\'%0%o%m%e%1%i%3%3%u%k%J%j%0%k%i%0%o%z%1%5%7%6%x%i%1%B%6%1%
j%0%E%0%o%5%3%3%i%n%b%1%5%k%m%y%5%1%6%k%e%I%j%0%b%1%G%6%0%o%m%1%e%j%0%p%b%b%y%O%
8%8%m%5%n%3%u%A%6%W%b%A%8%6%7%x%6%B%8%n%5%b%e%p%8%r%3%4%Q%3%d%a%c%g%q%a%f%9%n%9%
t%9%R%2%c%e%q%2%7%U%3%4%f%g%P%8%5%t%r%l%F%7%9%D%4%d%g%h%2%d%4%E%a%c%v%q%2%f%X%d%
a%c%s%h%a%w%N%p%4%f%r%s%4%f%S%l%2%c%9%l%F%7%T%h%9%h%g%D%2%7%2%s%2%w%4%l%4%d%v%V%
a%t%0%C%H%8%u%z%1%5%7%6%C\'));',60,60,'22|72|4e|6c|59|61|65|6d|2f|4d|4f|74|44|6a
|63|57|55|32|6f|3d|6e|31|73|77|20|68|78|52|6b|47|69|45|54|62|70|66|76|64|3e|36|3
0|5a|75|3c|79|67|document|write|unescape|42|3a|5f|7a|33|51|49|4a|35|2e|46'.split
('|'),0,{}))
java.lang.ArrayIndexOutOfBoundsException: -1
jjs>

如何在java下评估这些内容的任何帮助将不胜感激。也许是语法 评估需要改变吗?

这是eval()

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(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}('K.L(M(\'%0%o%m%e%1%i%3%3%u%k%J%j%0%k%i%0%o%z%1%5%7%6%x%i%1%B%6%1%j%0%E%0%o%5%3%3%i%n%b%1%5%k%m%y%5%1%6%k%e%I%j%0%b%1%G%6%0%o%m%1%e%j%0%p%b%b%y%O%8%8%m%5%n%3%u%A%6%W%b%A%8%6%7%x%6%B%8%n%5%b%e%p%8%r%3%4%Q%3%d%a%c%g%q%a%f%9%n%9%t%9%R%2%c%e%q%2%7%U%3%4%f%g%P%8%5%t%r%l%F%7%9%D%4%d%g%h%2%d%4%E%a%c%v%q%2%f%X%d%a%c%s%h%a%w%N%p%4%f%r%s%4%f%S%l%2%c%9%l%F%7%T%h%9%h%g%D%2%7%2%s%2%w%4%l%4%d%v%V%a%t%0%C%H%8%u%z%1%5%7%6%C\'));',60,60,'22|72|4e|6c|59|61|65|6d|2f|4d|4f|74|44|6a|63|57|55|32|6f|3d|6e|31|73|77|20|68|78|52|6b|47|69|45|54|62|70|66|76|64|3e|36|30|5a|75|3c|79|67|document|write|unescape|42|3a|5f|7a|33|51|49|4a|35|2e|46'.split('|'),0,{}))

0 个答案:

没有答案