詳細とTips・ご注意事項など
難読化対象ファイルの読み込みについて
(重要な御注意)
必ず、オリジナルのファイルはバックアップしておいてください。修正が必要な場合は必ずオリジナルを修正後、難読化処理を再びしていただく必要があります。
また、あってはならないことですが、難読化後、難読化前と同じ挙動にならないケースもないとは言えません。元に戻せるように必ずバックアップは行ってください。
|
1. 対象とする文字コード
現在、Shift_JIS(sjis-win)、EUC-JP(CP51932)、UTF-8の3種類になります。その他の文字コードにつきましてはサポート(
info@sphp.jp)にご相談ください。
ファイル選択画面で読み込まれた場合、文字コードは自動認識・自動選択されます。ただし、半角カタカナなどが含まれている場合で日本語の文字数が極端に少ない場合には、自動認識に失敗して文字化けしたソースが表示されることが理論的にはありえます。そのような場合には、手動でコピー&ペーストして、正しい文字コードを選択するようにしてください。
また、EUC-JPでも、正確に言えばCP51932のことであり、補助漢字(「©」「®」など)はサポートしていません。秀丸エディタなど、EUC-JPの補助漢字をサポートしているプログラムなどで作成したプログラムの場合、補助漢字が含まれている可能性があり、その場合は、自動判定に失敗し、右のようなダイアログが表示される場合があります。
2. ファイル形式について
ファイル選択ダイアログでの読み込みは、拡張子が「.php」「.inc」「.cgi」のみ、サポートしています。CGI版PHPをサポートするために「.cgi」をサポートするようにしていますが、Perl(やC言語など)で書かれたCGIはサポートしていません。
3. ソース・プログラムの書き方についての御注意
- 絶対ではないですが、より効率的な難読化を行われたい場合は、「'」ではなく「"」で文字列を囲むようにしてください。「"」で囲まれた文字列は「\x(16進数)」形式の文字列に変換後、難読化できますので、難読化を二重に出来ます。
既存のPHPソースで「'」を多用されている場合は、メインメニューの3番目の補助ツールのメニューをクリックして、「'」を「"」に変換する処理を、メインの難読化処理をされる前に行うようにされると良いかもしれません。
- 基本的に、PHPプログラムのステートメントの末尾の「;」を省略しないでください。PHPソースのブロックの最後のステートメントの末尾の「;」を省略された場合、そのまま難読化されますと、難読化後のソースは動作しません。レベル1のソースは動作するけれど、レベル2のソースは動作しないとなります。これを避けるためには、セミコロンをしっかりと付けていただくか、ステップ1で「【コーディングスタイル】PHPの終了タグ『?>』の直前のプログラムの末尾の『;』を省略することがある。」のチェックをつけるようにしてください。(バージョン1.03c(2012年6月22日リリース)以降で対応。)
PHPソース中に、正規表現などで「?>」が含まれている場合、「?>」をPHPソースのブロックの閉じタグと誤認して、右のような確認ダイアログが表示される場合があります。正規表現での問題の詳細と対象方法はこちらを参照してください。
正規表現を使われていない場合も、本質的には、上記リンク先で書かれている原因とほぼ同じ原因だと思われ、対処法もほぼ同じになると思われますので、お手数ですが、一度参照してみてください。
その他、
既知の問題については、こちらをご参照ください。
▲
4. 一部分の難読化
ソースの一部分だけ難読化するためには、「PHPソースの難読化II」というメニューを選んでください。その上で、
難読化したい部分の頭に「//sphp start

」というコメントタグを入れていただき、難読化したい部分の最後に「//sphp end

」というコメントタグを挿入してください。
難読化したい部分とそうでない部分の区切りが(あまりにも)中途半端な箇所に設定されている場合、期待通りに動作しないことも考えられます。
▲
5. 他のファイルからrequire(include)されるライブラリーファイルである場合

左のようにチェックボックスにチェックを入れてください。他のファイルから読み込まれるファイルの場合、例えば、「 ソース内の著作権表示(コメント)を編集削除できないようにする機能」で著作権表示を挿入する箇所が特殊であるためです。
▲
6. Content-typeが「text/html」以外の場合
▲
7. PHPの終了タグ「?>」の直前のプログラムの末尾の「;」を省略する書き方を使われる場合

「
【コーディングスタイル】PHPの終了タグ「?>」の直前のプログラムの末尾の「;」を省略することがある。」というチェックボックスにチェックを入れてください。バージョン1.03c(2012年6月22日リリース)以降で対応しています。
ただし、一部分のソースの難読化をされたい場合のメニュー「PHPソースの難読化II (一部分のみ難読化したい場合プ・4ステップ)」をご利用の場合、この機能は無効になるようにしてあります。難読化したい箇所に、「;」なしの部分がある場合は、手動で「;」を追加してください。難読化しない箇所であれば、「;」を省略されたままにしていても問題ありません。部分難読化する箇所に関しましては、手動で「;」を補っていただきたいという意味です。
また、終了タグ「?>」の直前のプログラムの末尾にきちんと「;」を入れている場合に、仮にこのオプションを使っていただいても、とくに問題はないと思われます(ファイルサイズが数バイトだけ増えます)。
▲
8. ファイル終端における PHP ブロックの終了タグ「?>」を省略する書き方を使われる場合

「
【コーディングスタイル】ファイル終端における PHP ブロックの終了タグ「?>」を省略している。」というチェックボックスにチェックを入れてください。バージョン1.03c(2012年6月23日リリース)以降で対応しています。
この機能は、できるだけ使わないようにしてください。この機能をoffにしている場合は、構文チェックが行われ、「<?php」に対応する「?>」があるかを確認し、難読化対象の文字列を決定するという作業が行われます。仮に「<?php」に対応する「?>」が存在しないとプログラムが判断した場合は、右のようなアラートが表示されます。
このアラートが表示される場合のほとんどは、お客様が意図的に終了タグの「?>」を省略される書き方をされているからと思われますが、そうでないのに表示される場合は、該当ソースに対して、弊社の難読化対象の文字列を決定するプログラム(SPHP)に問題があるということになります。このような場合に、「
【コーディングスタイル】ファイル終端における PHP ブロックの終了タグ「?>」を省略している。」機能が有効になっていますと、本当は難読化対象の文字列を決定するプログラム(SPHP)に不具合が発生しているのに強行突破されることになりますから、生成されるPHPソースもほぼ100%バグっている結果になるでしょう。そうなりますと、難読化後のソースに何か問題が発生しても、何が問題で不具合が発生しているのか特定するのが非常に困難になります。
このような理由から、構文チェックを回避する設定はあくまでも、トラブルシューティング的に使うようにしてください。一度は、上の「<?php」に対応する「?>」が存在しないというエラーメッセージを見られた後に、このチェックボックスをチェックしていただいたほうが良いです。もっと言えば、includeやrequireして読み込まれるファイルだからという理由などで意図的に「?>」を省略されていた場合も、「?>」の後ろに余計な改行やスペースを入れないように注意していただきながら「?>」を追加していただき、「
【コーディングスタイル】ファイル終端における PHP ブロックの終了タグ「?>」を省略している。」のチェックはしないようにしていただ方が、難読化による不具合を避けるという観点では無難です。
▲
9. プランセスSPHPにて作業中、Flashに関するエラーメッセージが表示される場合
これはお客様作業環境に関するエラーメッセージです。
非常に低い可能性ではあるかと思いますが、お客様(難読化作業を行うお客様)のWindows端末のFlash(正確には、ActiveX版)のバージョンが低い(バージョン9以下)ですと、「
当ソフトの全機能を御利用いただくためには、Flash player 10以上がインストールされている必要がありますので、
Adobe社のサイトから、Flash Player(ActiveX版)の最新版をインストールしていただいてから当ソフトを起動していただくことをお勧めします。」と表示されます。
これは文字通りの意味であり、Flash Playerをアップデートしていただくことを強くお勧めします。なお、ActiveX版のインストールのためには、普段御利用のブラウザがFirefoxなどIE以外のブラウザである場合でも、IEでダウンロードサイトにアクセスしていただく必要がありますので、その点は御注意ください。
▲
10. トラブルシューティング
期待通りに動作しない場合は、サポート(
info@sphp.jp)にお問い合わせいただく前に、以下のことをご確認ください。
▲