JavaScript暗号解読7つの方法の総括分析


この文章は全部で7種類のjavascript暗号化方法を紹介しました。ホームページを作る時(実はページの木馬です。ほほほ)、一番困ったのは自分が苦労して書いたクライアントIEが実行するjavascriptコードはよく他の人に簡単にコピーされます。自分で何かを書いても疲れます。javascriptコードはIEで説明して実行しますので、絶対的に秘密を守ることは不可能です。コピー者のコピーの難しさをできるだけ増大させて、彼に難しいことを知らせて、キャンセルします。ここ数年来の実践と個人研究の心得を結びつけて、皆さんと一緒にウェブサイトのjavascriptコードの暗号解読技術を検討してみます。以下のjavascriptコードを暗号化する例として、 LANGUAGE=「javascript」alert(「愛してる」)一:一番簡単な暗号解読です。Javascript関数escape()とunescape()については比較的に知っていると思います。(多くのウェブページの暗号化はそれらを使っています。)、それぞれ符号化と復号文字列です。例コードはescape()関数で暗号化されてから、下のフォーマットになります。alert%28%u 9 Ed 1%u 5 BA 2%u 32%B%まだ読めますか?もちろん、そのうちのASCII文字「alert」は暗号化されていません。もしJavascriptコードを書いて、もう一度暗号化してもいいです。以下のようにします。%61%6 C%65%72%28%22%u 9 ED 1%u 5 BA 2%u 9632%u 7 EBF%22%29%3 Bへ!どうですか?今回は完全に暗号化されました。もちろん、このように暗号化されたコードは直接運転できません。幸いにもeval(codestring)が使えます。この関数の役割はjavascriptコードを確認して実行します。必須オプションです。 codestring パラメータは有効です。 javascript コードの文字列値に上のデコードunescape()を加えて暗号化した結果は以下の通りです。 LANGUAGE="javascript"var code=unescape("%61%6 C%65%72%74%28%u 9 ED 1%u 5 BA 2%u 9632%u 7 EBF%22%29%3 B")eval(/SCRIPT)  簡単ですか?喜んではいけません。解読も同じ簡単です。コードを解読して他の人に並べます。へへへ二:意味を変える文字「」の使い方は皆さんにはよくわからないかもしれませんが、javascriptには特殊な文字があります。 (改行)、 r (車を返す (単引用符 )などは知っているはずですよね?「」の後に8進数または16進数の数字があります。「a」のように、「141」または「x 61」(小文字「x」のように注意してください。)と表してもいいです。二バイトの文字は漢字「黒」のように十六進法で「u 9 Ed 1」と表してもいいです。文字「u」は二バイトの文字を表しています。この原理例のコードによれば、八進変換文字列は以下のように表されています。 LANGUAGE="javascript">eval("141155451164542 u 9 EB 1532 U 5 BA 2 u 9632 u 7"EB 431")16進数変換文字列は以下の通りです。 LANGUAGE=「javascript」eval(「x 61 x 6 Cx 65 x 74 x 28 x 22 u 9 EBFx 22 x 29 B 3 B」)今回は、Javascriptが実行する時に自ら変換されるので、同様の復号も簡単です。 LANGUAGE="javascript">alert("x 61 x 6 Cx 65 x 74 x 28 x 22 u 9 EBFx 22 x 29 x 3 B")は、復号後の結果をダイアログで教えます。三:Microsoftを使ったスクリプトエンコーダScript エンコーディングツールの使用は多く紹介されていません。私はjavascriptを直接使ってコントロールのScripting.Encererを呼び出して完成したコードです。コードは以下の通りです。 LANGUAGE="javascript"var Senc=new ActiveXObject(Script.Enccoder);var コード='rnalert("私は一緒に愛しています");rn>var Enccode=Senc.EnccodeScript File(「.httm」,code,0,")alert;(芫@~^FgAAAA==@@唴@DD`Jハッカーの防御線r〓〓〓〓〓〓〓〓とFgMAAA==^菗~@はとてもみっともないですよね?しかし、対応する解読ツールはすでに出てきました。ページの解読もあります。ウェブページのコードを解読するのが多すぎるため、私は多く言いません!私のオリジナルの解読コードを紹介します。 LANGUAGE=「JScript.Enccode」function decode()alert(decode.toString();はどうですか?簡単でしょう?これは原理です。コードを実行する前にIEが先に復号します。もし暗号化されたコードを上のdecode()のようなカスタム関数に入れてから、カスタム関数decodeにtoString()メソッドを呼び出したら、復号後のコードになります。このようにコード化されたLANGUAGE属性はJScript.Enccodeであり、見破られやすいと思うなら、ほとんど知られていないwindowオブジェクトの方法execScript()があります。その正体はwindow.execScriptです。 sExpression、 sLanguage )  パラメータ:sExpression: 必ず選択します。文字列(String)実行するコード。sLanguage: 必ず選択します。文字列(String)実行するコードの言語を指定します。標準値は Microsoft JScriptを使う時、前の「window」は省略して書いてもいいです。それを利用して、コード化されたjavascriptコードをうまく実行できます。 LANGUAGE="javascript">execScript("芫芫@~^ FgAAAA==@21812;唴@&ls"DD`J私は一緒にいることが好きです。r〓〓〓〓〓〓〓〓とFgMAAA===^芫菗@"、""JScript.Enccode")は方法の2つを利用して、その中の"号内の文字列を再符号化して、JScript.Encod"とコードの特徴コードをエンコードすることができます。任意のNUL空文字(16進数00 H)を追加した偶然の実験により、HTMLページの任意の位置に任意の数の「空文字」を追加することが分かりました。IEはそのままその内容を表示し、その中のjavascriptを正常に実行します。 コードは、追加された「空の文字」を一般的なエディタで確認すると、スペースや黒いブロックのような形で表示され、元のコードが分かりにくくなります。メモ帳で見ると「空の文字」は「スペース」になります。この原理で暗号化された結果は以下の通りです。 C RI P T L ANG U A G E =" J a. v a. S c r i p t ">  a. l あなた t (" 私 愛 1つ 起きます ;  < / SC。 R I P T>どうですか?めちゃくちゃに見えますか?方法を知らない人は、中の「空文字」(00 H)を消すとは考えにくいです。5:無駄な内容の乱れと改行スペースTAB大法javascriptコードには無駄な文字列や数字、不要なコードやコメントの内容などを大量に入れて、本当に有用なコードを埋没させて、改行、スペース、TABの場所に有用なコードをたくさん入れて改行、スペース、TAB、正常な文字列を「」で改行すると、コードが分かりにくくなります。私が暗号化した形式は以下の通りです。 LANGUAGE=「javascript」「xajgxsadffgds」12345567890 625623216;var $=0;alert//@%&*(^%^//cctv function//(//hsaasajx xc/*asjgggggg*/「愛しています。」//asjgfgf/*@芫%$^96667 r 45 fggggggggghtjty*//window)、「432 hu";212351436少なくともこのようなコードを見たら分析する気がしません。六:自写解読関数法という方法は一、二と同じです。自分で関数を書いてコードを解読するだけです。多くのVBSウイルスはこの方法を使って自身を暗号化して、特徴コードスキャンを防止します。以下は私が書いた簡単な暗号解読関数です。暗号化コードは以下の通りです。 LANGUAGE=「javascript」function code{code}  var c=String.from CharCode(code.charCodeAt(0)+code.length)for(var) i=1;i7:誤った利用はtry{}catch(e)構造を利用してコードをテストします。この考えはとてもいいですが、実用性があまりないので、例だけあげます。 LANGUAGE="javascript"var a='alert("私は一緒に愛しています")';var c="for(var) i=0;i