1

我正在尝试在 jint 中运行以下代码:

Jint.Engine engine = new Jint.Engine();
var result = engine.SetValue("data", data).Execute("(/\\n(.+)/.exec(eval(data.replace(/\\s+/, \"\").slice(0, -2)))[1]);").GetCompletionValue();

其中,当未转义时,正在执行以下 javascript:

(/\n(.+)/.exec(eval(data.replace(/\s+/, "").slice(0, -2)))[1]);

data变量对应一个 JSfuck 字符串,类似于:https ://pastebin.com/vmGAebW5

问题是我总是得到一个“索引超出数组范围”异常,即使 javascript 在浏览器中运行时工作正常。关于导致问题的任何想法?

4

1 回答 1

0

windows.location在 Jint 中不可用,因为该window对象由浏览器提供。如果您希望能够运行这种代码,那么您将需要模拟所有浏览器公开的对象,这是一项艰巨的任务。

另外,您正在使用SetValue('window.location', "")我认为这不是有效的呼叫。属性名称不应包含点。

于 2017-04-03T18:01:48.013 回答