Web ページを作成するとき (実際には Web トロイの木馬です (笑))、最も迷惑なことは、クライアント IE で実行するために一生懸命書いた JAVASCRIPT コードが、他の人によって簡単にコピーされてしまうことがよくあることです。少し不快ですが、自分で何かを書くのはかなり疲れます... ^*^
しかし、JAVASCRIPT コードは IE で解釈および実行されるため、絶対的な機密性を維持することは不可能であることも明確に認識する必要があります。私たちが行うのは、コピー作者がコピーするのをできるだけ困難にして、彼が後退できるようにすることです(できれば〜!〜)。以下では、過去数年間の私自身の実践と個人的な研究に基づいてそれについて説明します。 Web ページ内の JAVASCRIPT コードの暗号化および復号化テクノロジの経験。
次の暗号化された JavaSCRIPT コードを例に挙げます。
<SCRIPT> </p> <p>alert("Hacker Defense");復号化 </p> <p> JAVASCRIPT 関数、escape() および unescape() (多くの Web ページで暗号化に使用されます) に精通している必要があります。これらはそれぞれ文字列をエンコードおよびデコードします。たとえば、サンプル コードは、escape() 関数で暗号化され、次のようになります。次の形式: </p> <p>alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B </p> <p>どうやって?まだわかりますか?もちろん、ASCII 文字「alert」は暗号化されません。必要に応じて、次のように JavaSCRIPT コードを記述して再暗号化することもできます: </p> <p> %61%6C%65%72%74%28%22%u9ED1% u5BA2%u9632% u7EBF%22%29%3B </p> <p> はは!どうやって?今回は完全暗号化です! </p> <p> もちろん、暗号化されたコードを直接実行することはできません。幸いなことに、この関数の機能は、JavaScript コードをチェックして実行することです。必須の codeString パラメーターは、有効な JavaScript コードを含む文字列値です。上記のデコード unescape() を追加すると、暗号化された結果は次のようになります。 %u9ED1%u5BA2%u9632%u7EBF%22%29%3B"); </p> <p> eval(code) </p> <p> </SCRIPT>
とても簡単ですね?満足しないでください。復号化も同様に簡単で、復号化コードは他の人 (unescape()) に任せられます。笑
2: エスケープ文字 "" の素晴らしい使い方
エスケープ文字 "" には馴染みがないかもしれませんが、JavaScript には n (ライン フィード)、r (キャリッジ リターン)、' などの特殊文字が用意されています。 (単一の引用符に注意する必要があります) などですよね?実際、「」の後に 8 進数または 16 進数を続けることもできます。たとえば、文字「a」は「141」または「x61」と表現できます (小文字の「x」であることに注意してください)。漢字「黒」などの 2 バイト文字は、16 進数で「u9ED1」(小文字の「u」に注意) としてのみ表現できます。この原則によれば、文字「u」は 2 バイト文字を表します。コード例は次のように表現できます:
8 進数のエスケープ文字列は次のとおりです:
eval("1411541451621645042u9ED1u5BA2u9632u7EBF425173")
16 進数のエスケープ文字列は次のとおりです:
今回はJavaScriptが実行されるときにデコード関数がありません。自体は変換され、デコードも次のように非常に簡単です。
ダイアログボックスが表示されます解読結果をお伝えします!
3: エンコードには Microsoft が作成したスクリプト エンコーダー Script を使用します
ツールの使用方法についてはあまり紹介しません。 JavaScript を直接使用して Scripting.Encoder コントロールを呼び出し、エンコードを完了しました。コードは次のとおりです。
var Senc=new ActiveXObject("Scripting.Encoder");
var code='
var Encode=Senc.EncodeScriptFile(".htm",code,0,"");
SCRIPT>
エンコードされた結果は次のとおりです:
理解するのは難しいですよね?しかし、対応する復号化ツールはすでにリリースされており、復号化 Web ページもあります。 Web ページを解読するにはコードが多すぎるため、これ以上は言いません。以下に、私のオリジナルの復号化コードを紹介します。スクリプト>
どうですか?十分シンプルですよね?原則として、IE はエンコードされたコードを実行する前にデコードします。まず暗号化されたコードを上記の decode() などのカスタム関数に入れてから、カスタム関数の decode メソッドで toString() を呼び出すと、結果は次のようになります。デコードされたコード!
この方法でエンコードされたコードの LANGUAGE 属性が JScript.Encode であり、人に見破られやすいと考えると、ウィンドウ オブジェクトのほとんど知られていないメソッド execScript() が存在します。その元の形式は次のとおりです。
window.execScript( sExpression, sLanguage )
パラメータ:
sExpression: 必須。弦。実行されるコード。
sLanguage:必須。弦。実行されるコードの言語を指定します。デフォルト値は Microsoft JScript です
使用する場合は、前の「ウィンドウ」を省略できます。
これを使用すると、次のように、エンコードされた JavaScript コードを非常にうまく実行できます。 Hacker Defense r#p@#@&FgMAAA==^#~@","JScript.Encode")
方法 2 を使用して、 "" 記号内の文字列を再エンコードできます。 「JScript.Encode」とエンコード機能コード「#@~^」が表示されない方が効果は高くなります。
4: 任意の NUL ヌル文字 (16 進数 00H) を追加します
偶然の実験により、HTML Web ページのどこかに任意の数の「ヌル文字」を追加しても、IE はコンテンツを通常どおり表示し、実行することがわかりました。通常はJavaScriptコードを記述しますが、追加した「空文字」は一般的なエディタで見るとスペースや黒いブロックのように表示され、メモ帳などで見ると元のコードが分かりにくくなります。この原理を使用すると、暗号化の結果は次のようになります。 (表示される「スペース」は「空文字」を表します)
a l er t (「ハッカー防御」)
< / SC R I P T> どうやって?汚く見えますか?この方法を知らない人が、中にある「空文字(00H)」を削除することを考えるのは難しいでしょう。
5: 無駄な内容の混乱と改行スペース TAB メソッド
JAVASCRIPT コードでは、無駄な文字列や数値、無駄なコードやコメント内容などを大量に追加することができるため、本当に役立つコードは改行、スペース、タブを追加できるコードに大量の改行、スペース、タブを追加し、通常の文字列を "" で囲みます。コードがわかりにくい!たとえば、私の暗号化されたフォームは次のとおりです。
"xajgxsadffgds";1234567890
625623216;var $=0;alert//@$%%&*() (& (^%^//cctv 機能//
(//hhsaasajx xc
/*
asjgdsgu*/
"黑
ゲスト
防衛線"//ashjgfgf
/*
@# %$^&%$96667r45fggbhytjty
*/
//ウィンドウ
)
;"#@$#%@#432hu";212351436
少なくともこのようなものがあります。コードはわざわざ分析する必要はありません。どうすれば分析できますか?多くの VBS ウイルスは、署名のスキャンを防ぐために自分自身を暗号化する方法を使用します! 以下は、私が作成した簡単な暗号化および復号化関数です
暗号化コードは次のとおりです (詳細については、ファイル「Encryption.htm」を参照してください)。
関数compile(code)
var c=String.fromCharCode(code.charCodeAt(0)+code.length);
for(var i) =1;i
アラート(escape(c));
}
compile('alert ("Hacker Defense");')
を実行して得られた暗号化結果は次のとおりです: o%CD%D1%D7%E6%9CJ%u9EF3%uFA73 %uF1D4%u14F1%u7EE1Kd
対応する暗号化 復号化されたコードは次のとおりです。
var c=String.fromCharCode(code.charCodeAt (0)-code.length);
for(var i=1;i
7: 間違った使い方
このアイデアは非常に良いものですが、try{}catch(e){} 構造を使用します。自慢してください)、実用的ではないので、例のみを示します
var a='alert("ハッカー防御");';
for(var i=0;i c+=String.fromCharCode(a.charCodeAt(i)^61);} alter(c); // もちろん、上記は実際にこのメソッドが使用された場合の暗号化コードです。書き込み暗号化は行われません //変数 c は暗号化されたコードです //次の関数 t() は、最初に初期パスワードが 0 であると想定し、それを復号します //エラーが発生した場合は、次の値を追加します。パスワードに 1 を入力し、正しく実行されるまで復号化と実行を続けます var d=c; // 暗号化されたコードを保存します t();
b+ =1;
t(); //setTimeout("t()",0);
}
>