JavaScript難読化処理
 のためのヒント

▼▽ Instant Access Menu ▽▼

4.よく出てくるオブジェクト名などを短くする

3-2のソースを使って、さらに難読化を試みてみます。よく出てくるオブジェクト名を短い変数に置き換えます。「document」や「window」は最頻出オブジェクトです。「d = document;」「w = window;」とします。以後、出現する「document」の部分は全部、「d」で代用できます

 ただし、どんなソースでも、単純な一一括変換でOKかといえば、そのようなことはありません。問題が生じることがあります。
一例をあげれば、「var url_r = window.parent.right.document.URL;」というものがあった場合、このdocumentは、このJavaScriptが実行されているページのdocumentではなくて、別のフレームのページのdocumentのことですので、単純な変換が本来はできません。そのため、「d=document;var url=d.URL;var url_r=window.parent.right.d.URL;」としてしまうと、「window.parent.right.d.URL;」のところでエラーになります。


同様に、「document.myForm」もやたらと出てきますので、checkInput()関数の中で「dm = d.myForm;」としておきます(chekInput()関数の外で定義しても、動かないので注意が必要です。また、「dm = d.myForm;」とした場合、Netscape 4.7xでのみエラーになりましたので、今や化石となったブラウザNetscape 4.7x(ユーザーシェア約0.05%未満。2千人に1人)を考えるならば、「dm = document.myForm;」としてください)。すると下記のようになります。
ソース4-1
実際は、これにより、ファイルサイズは実際には49バイトしか減っていませんが、実はこれよりもっと重要な意味が他にあるのです。秀丸では、キーワードを色付きで強調表示できますが、「document」をキーワードとして登録しているユーザーは、

修正前


修正後


のようにみえます。修正後のファイルでは、「document」がこのソース後半部分には出現しませんので、色がついている部分が少なくなっていることが分かります・・・ちょっと分かりにくいですね。でも、減っています。

ハイライトされるキーワードが減れば減るほど、解読が困難になります。

この難読化したソースを実際に外部ファイル化して、下記の入力フォーム・サンプルで入力チェックができるようにしています。難読化しても問題なく動作することを確認してください。

▼ よくある入力フォームとJavaScriptによるチェック(検証用サンプル)
名前:
フリガナ:
メールアドレス:
  

 このフォームで使われているJavaScript
次のページでは、もっと読みにくくするため、スペースを削除して「字がぎっしり」という状況を作り出します。「敵」に読む気を失せさせます。

  目次:

連絡先:info@broadband-xp.com
【PR】 HTMLソース難読化用PHPライブラリ

(免責事項)このホームページの内容に起因する如何なるトラブルに対しても責任を持ちえません。必ず自己責任でご利用ください。

【広告】 こんなのがあった! PDFファイル保存対策「SHTML PDF保護モード