IonCubeの機能は非常に広範囲であるため、1つの記事で説明することができます。 以下では、IonCubeの主な機能について説明します。これは、ライセンスのない使用からコードを保護するために必要です。
概念のリスト
1.ソースコードのエンコード-PHP言語で記述されたソースコードがマシン命令のセットに変換されるプロセス。読み取りとデコードは可能な限り困難です。
2.難読化-プログラムのソースコードを機能を保持する形式にするが、分析、作業アルゴリズムの理解、および修正を複雑にします。
3.ライセンスは、エンコードされたソースコードの実行に必要な秘密キーでエンコードされた特別なファイルです。
必要なソフトウェア
1. IonCube Encoder-さまざまなオペレーティングシステム用のバイナリファイルのセット。ソースファイルをエンコードし、難読化してライセンスを生成できます。 有料ソフトウェアですが、試用版をダウンロードできます 。
2. IonCube Loader-.soまたは.dllライブラリの形式で提供されます。IonCubeEncoderを使用してエンコードされたソースコードをデコードする必要があります。 無料のソフトウェアはこちらからダウンロードできます 。
ソースコードのエンコードと難読化
コードが記述されているPHPのバージョンに応じて、IonCube Encoderはエンコードと難読化用に次のバイナリを提供します:ioncube_encoder、ioncube_encoder5またはioncube_encoder53
コマンドの形式は次のとおりです。
./ioncube_encoder <source_file_or_folder> –o <target_file_or_folder> [options]
以下に、コードのコーディングと難読化に必要な主なオプションをリストします。
--replace-target-このオプションは、ターゲットディレクトリまたはファイルが既に存在する場合、それを完全に新しいディレクトリまたはファイルで置き換えるようエンコーダに指示します。 例:
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target
--copy @ <file_or_directory_name> -このオプションは、指定されたファイルまたはディレクトリ(およびそのすべてのサブディレクトリ)を、コンテンツをエンコードせずにコピーするようエンコーダーに指示します。 @記号は、エンコードされるディレクトリのルートからコピーするファイルまたはディレクトリへのパスを探す必要があることを示します。 つまり configsディレクトリのコピーが指定されている場合は、エンコードされたディレクトリのルートにあるconfigsディレクトリのみがコピーされ、たとえば/ configsサブカテゴリの例ではコピーされません。 例として、構成ファイルが置かれ、エンコードする必要のないディレクトリを引用できます。
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --copy @configs/
--ignore @ <file_or_directory_name> -このオプションは、指定されたファイルまたはディレクトリ(およびそのすべてのサブディレクトリ)を無視するようエンコーダに指示しますが、結果のディレクトリにはコピーされません。
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --ignore @docs/
--obfuscate <entities> -コードの難読化プロセスを開始します。難読化が適用されるオブジェクトは、functions、linenos、locals、またはallです。 例:
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --obfuscate all
--obfuscation-key「some_unique_key」は難読化に必要なパラメーターであり、一意のキーを設定するため、コードのデコードがほとんど不可能になります。
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --obfuscate all --obfuscation-key "It is unique key :)"
--with-license <path> -このオプションは、起動時にファイルがライセンスファイルを要求する必要があることをエンコーダに伝えます。 ライセンスファイルへのパスは、それを要求したファイルに相対的であるため、ここでライセンスファイルの名前を単に指定する方が良いでしょう。ルートディレクトリ。 したがって、ライセンスファイルは、アプリケーションがインストールされているルートディレクトリに簡単に保存できます。 例:
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --with-license license.txt
--passphrase <key> -ファイルのエンコードに使用される秘密鍵。 注意 :ライセンスファイルは同じ秘密キーで生成する必要があります。
--with-license
オプションを使用する場合は必須です。
./ioncube_encoder unencrypted_folder –o encrypted_folder --replace-target --with-license license.txt --passphrase some_passphrase
ライセンス作成
ライセンスは、make_licenseバイナリを使用して作成されます。 ライセンスを作成するためのコマンド形式:
./make_license –-passphrase <key> –o <output-path>
--passphrase <key> -このオプションは、ライセンスの署名を生成するために使用される秘密鍵を設定します。 重要 :キーは、ソースコードのエンコード時に使用されたキーと一致する必要があります。
サーバーライセンスの制限
--allowed-server [<ドメイン名>] [@ [<IPアドレス>]] [{<MACアドレス>}] -このオプションは、対象となるサーバーのドメイン、IPまたはMACアドレスによってライセンスの有効性を制限するために使用されます。
例。
1.ドメイン制限:
--allowed-server www.foo.com
--allowed-server www.foo.com,www.bar.com
--allowed-server 1.2.3.4@
ドメインの末尾にある「@」記号は、ドメインがIPアドレスに似ていますが、ドメインと見なされることを意味します。
注 :
$_SERVER['SERVER_NAME']
コンストラクトは、IonCube Loaderのドメインを決定するために使用されます。
2. IPアドレスの制限:
--allowed-server 192.168.1.4
--allowed-server 192.168.1.4,192.168.1.20
注:
1.エンコードされたファイルがWebサーバーを介して要求されると、IPはWebサーバーが送信するIPと照合されます。
2.エンコードされたファイルが直接要求される場合、たとえば、PHPシェルスクリプトを処理する場合、IPはネットワークインターフェイスのプライマリIPアドレスとのみ比較されます。
3.制限でIPアドレス127.0.0.1を指定することはできません
3. MACアドレスの制限。 MACアドレスは6バイトで構成され、16進形式で提示される必要があります。次に例を示します。
--allowed-server '{00:01:02:06:DA:5B}'
4.制約の組み合わせ。 IonCubeを使用すると、次のような制限を組み合わせることができます。
--allowed-server 'www.foo.com@192.168.1.1{00:02:08:02:e0:c8}'
制限時間
--expire-in <period> -ライセンスが生成された時点から有効な期間を指定できます。 期間は、秒(s)、分(m)の値で設定できます。 時間(h)または日(d)。 例:
--expire-in 360s
--expire-in 20m
--expire-in 24h
--expire-in 365d
--expire-on <yyyy-mm-dd> -ライセンスが有効になる正確な日付を指定できます。 例:
--expire-on 2012-03-20
IonCube Loaderをインストールする
1. OS用のIonCube Loaderをダウンロードします。無料です。
2.アーカイブには、各phpバージョンの拡張子が.soまたは.dllの2つのファイルがあり、そのうちの1つには「ts」という接尾辞が付いています。つまり、このファイルの「スレッドセーフ」機能がアクティブになります。
3. php.iniで、ダウンロードしたライブラリへのパスを記述します。 例:
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3.so
zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.3_ts.so
zend_extension_ts = /usr/local/ioncube/ioncube_loader_lin_5.2.so
PHPバージョン5.3未満では、ライブラリをスレッドセーフ機能で使用する場合は、zend_extension_tsディレクティブを指定する必要があることに注意してください。
4. Webサーバーを再起動します。
基本的に、ライセンスのない使用からコードを保護するために知っておく必要があるのはこれだけです。 詳細については、 IonCubeの公式Webサイトをご覧ください。