Невозможно внедрить код в анонимную функцию внутри объекта window.webpackJsonp - PullRequest
1 голос
/ 24 января 2020

Что ж, я пытаюсь выполнить функцию внутри минимизированного Javascript, чтобы воспроизвести поведение функции контекстного меню.

Я использовал Chrome dev-инструменты с точками останова прослушивателей событий, так как Рори предложил мне этот комментарий . И я обнаружил, что обратный вызов события контекстного меню происходит по этому пути:

window.webpackJsonp[1][1][5754]

С этой анонимной функцией после индексатора:

5754: function(t, n, e) {
            "use strict";
// ...
}

Вкл. этот вопрос кто-то предложил использовать этот код:

eval(doSomething.toString().replace(/}\s*$/, ' return id; $&');

Я пытался внедрить этот код:

eval(window.webpackJsonp[1][1][5754].toString().replace(/}\s*$/, ' console.log(t); console.log(n); console.log(e); $&'));

Я использовал console.log, чтобы узнать, какие объекты связаны с этими аргументами.

Но эта ошибка вызвала:

Uncaught SyntaxError: Для операторов функций требуется имя функции.

Так что я не знаю, где продолжить ...

1 Ответ

0 голосов
/ 24 апреля 2020

Изменение eval(...) на eval('(' + ... + ')') работает для меня. Определение в https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval говорит, что eval принимает либо выражения, например, function () {}, либо операторы, например, function foo () {}, так что вы были укушены ошибкой eval реализации.

...