2011-07-21 5 views
3

このタイプの難読化をJavaScriptでどのように実現でき、どのようにデコードすることができるのか、私はいつも不思議でした。以下はサンプルコードです:この種のJavaScriptの難読化はどのように機能しますか?

var _0x4e9d=["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65","\x77\x72\x69\x74\x65"];document[_0x4e9d[0x1]](String[_0x4e9d[0x0]](0x3c,0x62,0x75,0x74,0x74,0x6f,0x6e,0x20,0x6f,0x6e,0x63,0x6c,0x69,0x63,0x6b,0x3d,0x27,0x6a,0x61,0x76,0x61,0x73,0x63,0x72,0x69,0x70,0x74,0x3a,0x69,0x66,0x20,0x28,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x70,0x61,0x73,0x73,0x22,0x29,0x2e,0x76,0x61,0x6c,0x75,0x65,0x3d,0x3d,0x22,0x6a,0x30,0x30,0x77,0x31,0x6e,0x22,0x29,0x7b,0x61,0x6c,0x65,0x72,0x74,0x28,0x22,0x59,0x6f,0x75,0x20,0x57,0x49,0x4e,0x21,0x22,0x29,0x3b,0x77,0x69,0x6e,0x64,0x6f,0x77,0x2e,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x2b,0x3d,0x20,0x22,0x3f,0x6c,0x76,0x6c,0x5f,0x70,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3d,0x22,0x2b,0x64,0x6f,0x63,0x75,0x6d,0x65,0x6e,0x74,0x2e,0x67,0x65,0x74,0x45,0x6c,0x65,0x6d,0x65,0x6e,0x74,0x42,0x79,0x49,0x64,0x28,0x22,0x70,0x61,0x73,0x73,0x22,0x29,0x2e,0x76,0x61,0x6c,0x75,0x65,0x7d,0x65,0x6c,0x73,0x65,0x20,0x7b,0x61,0x6c,0x65,0x72,0x74,0x28,0x22,0x57,0x52,0x4f,0x4e,0x47,0x21,0x20,0x54,0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6e,0x21,0x22,0x29,0x7d,0x27,0x3e,0x43,0x68,0x65,0x63,0x6b,0x20,0x50,0x61,0x73,0x73,0x77,0x6f,0x72,0x64,0x3c,0x2f,0x62,0x75,0x74,0x74,0x6f,0x6e,0x3e)); 

補遺:デ難読化していただきありがとうございますが、私はこのように私自身のコードを難読化する方法で唯一興味があります。

+4

Neoのように16進数で読むことができますか? – Paystey

+0

[例](http://jsfiddle.net/pCq5y/) – Raynos

+1

このように多くの人がこの「難読化された」コードを簡単に読むことができたとすれば、それを自分のコードに適用する点は何でしょうか?明らかに、この難読化はあまりにも明白です。 – NealB

答えて

1

は、実際に私は今、別途各文字を加えることなく、そのようなJavaScriptを難読化するための現実的な方法を考え出しました。

http://javascriptobfuscator.com/default.aspx

これは難読化ツールです。

+1

このWebサイトで難読化されているコードを取り出し、JSbeautifierに配置してください。正常に戻る! (変数名の変更、peh) – TaylorMac

4

\xnnは、16進数の文字コードです。

ので\x63あなたを与えるだろう「」

あなたはそれに各文字を変換します何かを持っている必要があり、独自のコードだし、それを行うには進コード・ポイント:次に

var aAsHex = '\\x'+'a'.charCodeAt(0).toString(16) 

コピーして、出力をファイルに貼り付けます。

+0

これはどうですか? _0x4e9d – ToniG

+0

と私のコードをこのように難読化する方法は? – ToniG

+0

マルチバイト文字。 –

6

JavaScriptでsomeobject["xyz"]someobject.xyzとほぼ同じです。

最初の文:

_0x4e9d 2つの文字列の配列である:

  • "fromCharCode"
  • "write"

2番目のステートメントはdocument.write(String.fromCharCode(0x3c,0x62,...,0x3e))にデコードします。

最後に、書かれている文字列はHTMLのこの作品です:

<button onclick='javascript:if (document.getElementById("pass").value=="j00w1n"){alert("You WIN!");window.location += "?lvl_password="+document.getElementById("pass").value}else {alert("WRONG! Try again!")}'>Check Password 
+0

文字列をデコードするには、人間のJavaScriptインタープリタのように、コードを行ごとに基本的に実行します。これは一般的なものをデコードする唯一の方法です。 – Nayuki

+0

OKこれはすてきで明確な説明です。だから私はこのような私のjavascriptを難読化することができます、私はいくつかのソフトウェアが必要ですか、私は自分でそれをすべて行う必要がありますか? – ToniG

+0

誰も私のコードを難読化する方法を教えてくれないようですか? – ToniG

3

var _0x4e9d = ["\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65", "\x77\x72\x69\x74\x65"];

["fromCharCode", "write"]

document[_0x4e9d[0x1]](String[_0x4e9d[0x0]]

document.write(String.fromCharCode

ですString.fromCharCode(0x3c, 0x62, ...)

onclick

<button 
    onclick='javascript:if (document.getElementById("pass").value=="j00w1n"){alert("You WIN!");window.location += "?lvl_password="+document.getElementById("pass").value}else {alert("WRONG! Try again!")}' 
> 
    Check Password 
</button> 

JavaScriptが$stringにデータが含まれていると仮定すると、

if (document.getElementById("pass").value=="j00w1n") { 
    alert("You WIN!"); 
    window.location += "?lvl_password=" + document.getElementById("pass").value 
} else { 
    alert("WRONG! Try again!") 
} 
+0

私のコードをこのように難読化する方法は何ですか? – ToniG

1

PHPです。逆のプロセスを実行することで難読化することができます。

echo preg_replace('~((0|\\\)x([0-9a-f]+))~ei', 'chr(hexdec("\\1"))', $string); 

あなたはこれを取得します...

var _�=["fromCharCode","write"];document[_�[]](String[_�[]](<,b,u,t,t,o,n, ,o,n,c,l,i,c,k,=,',j,a,v,a,s,c,r,i,p,t,:,i,f, ,(,d,o,c,u,m,e,n,t,.,g,e,t,E,l,e,m,e,n,t,B,y,I,d,(,",p,a,s,s,",),.,v,a,l,u,e,=,=,",j,0,0,w,1,n,",),{,a,l,e,r,t,(,",Y,o,u, ,W,I,N,!,",),;,w,i,n,d,o,w,.,l,o,c,a,t,i,o,n, ,+,=, ,",?,l,v,l,_,p,a,s,s,w,o,r,d,=,",+,d,o,c,u,m,e,n,t,.,g,e,t,E,l,e,m,e,n,t,B,y,I,d,(,",p,a,s,s,",),.,v,a,l,u,e,},e,l,s,e, ,{,a,l,e,r,t,(,",W,R,O,N,G,!, ,T,r,y, ,a,g,a,i,n,!,",),},',>,C,h,e,c,k, ,P,a,s,s,w,o,r,d,<,/,b,u,t,t,o,n,>)); 
+0

ええ、まだ私のjavascriptを難読化する方法はありません – ToniG

関連する問題