0

Fiddler で JavaScript 関数を書き直す必要があります。この答えは問題を部分的に解決していると思います。ただし、まだ正規表現の情報を探しています。例えば:

function traceThis(message) {
   //setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   //if (!window.console) console = {};
   //console.log(message);
}

なる必要があります:

function traceThis(message) {
   setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   if (!window.console) console = {};
   console.log(message);
}

traceThis() 関数内の個々の行を一致させて置き換える方が簡単だと思います。ただし、その中のステートメントに関係なく、「関数」からその終了「}」までの任意の関数を選択して置き換える方法を学ぶことが最も役立つと思います。

4

2 に答える 2

0

関数のソースは次の方法で取得できますtraceThis.toString ()。そこから、必要な変更を行ってから、関数を使用して再作成できますnew Function

于 2012-11-07T17:48:44.277 に答える
0

スクリプトが実際に実行されるまで toString() 関数を使用できないため、HBP の回答は機能しません。しかし彼は、おそらく JS パーサーも複雑な正規表現も必要としない、この問題を解決する簡単な方法を指摘しています。

つまり、次の単純な文字列置換を行うだけです。

function traceThis(message) {

// Here's my NewFunction
function traceThis(message)
{
   // My new instructions here
}

function OriginalVersionOfTraceThis(message) {

そうすれば、インジェクターが実行されると、古い関数の先頭が目的のスクリプト コードで上書きされ、古い関数の名前が別の名前に変更されます (呼び出されることはありません)。

于 2012-11-07T22:59:22.573 に答える