PHPのソースコードを暗号化するにはどうすればいいですか?

藏色散人
リリース: 2023-04-06 18:26:01
オリジナル
29833 人が閲覧しました

php は現在最も人気のある Web プログラミング言語です。ただし、PHP は解釈して実行されるため、ソース コードがプログラムであり、商用化 (またはその他の目的) には暗号化が必須です。このシリーズでは、中国で一般的に使用されている PHP 暗号化方式をいくつか紹介し、分析します。

PHPのソースコードを暗号化するにはどうすればいいですか?

#php ソース コードを暗号化する方法:

php ソース コードを暗号化する方法:

1. PHP 拡張機能を使用しない暗号化

このタイプの暗号化の代表的なものには、Weidun PHP 暗号化エキスパート、PHP オンライン暗号化プラットフォーム、PHP Aegis などが含まれます。

このタイプの暗号化は、コアとして eval 関数を使用し、暗号化の目的を達成するためにさまざまな文字列難読化やさまざまなトリックによって補完されます (より正確には、混乱と見なす必要があります)。以下では、このタイプの暗号化の一般的なプロセスを説明するために、単純な hello world を例として取り上げます。

<?php
  echo "hello world";
ログイン後にコピー

まず、このコードを eval

<?php
  eval(&#39;echo "hello world";&#39;);
ログイン後にコピー

を通じて実行されるコードに変換します。次に、base64 エンコーディングなどのいくつかの変換を実行します

<?php 
  eval(base64_decode(&#39;ZWNobyAiaGVsbG8gd29ybGQiOw==&#39;));
ログイン後にコピー
これで、最初の暗号化された PHP コードが焼きたてになりました。 。 。

上記の例は非常に単純で、PHP やその他の言語の基本的な知識があれば、基本的に誰でも簡単に理解して復号化できます。したがって、この暗号化を少なくとも単純に見せないようにする何らかの方法が必要です。

2. 複数のエンコード関数を同時に使用する

先ほど述べた Base64 に加えて、PHP には、urlencode、 gzcompressなどこれらの関数を混合すると、復号化の複雑さ (困難さではなく) が増加する可能性があります。さらに、strtr を使用して独自のエンコード ルールを策定することもできます。関数名の代わりに変数を使用する 変数の名前には特定の文字を使用する #ここで説明する特定の文字とは、I と 1、0 と O など、非常によく似た文字です。画面全体が O と 0 で構成される変数で埋め尽くされ、それぞれの名前が 10 文字を超えると想像してください。 。 。ファイル自体が変更されているかどうかを判断する

この機能は簡単そうに思えます。ファイルの概要を作成し、それを比較して変更されているかどうかを確認します。しかし、ファイルに概要を埋め込むにはどうすればよいでしょうか?完璧な解決策は見つかりませんでしたが、回避策は簡単です。 。 。

<?php
$code = substr(file_get_contents(__FILE__), 0, -32);
$hash = substr(file_get_contents(__FILE__), -32);
if(md5($code) !== $hash) {
  exit(&#39;file edited&#39;);
}
ACBC41F727E00F85BEB3440D751BB4E3
ログイン後にコピー

もちろん、この検証文字列を別の位置に配置して、クラックの難易度を高めることもできます。これにより、他の人はあなたのプログラムを解読するためにさらに努力する必要があります。 。 。

原理がわかったので、復号化は当然非常に簡単です。一般的に言えば、手順は 3 つだけです:

eval を出力 (echo など) に置き換えて、エンコードに従って文字列を復元します。ファイルの規則 復号化が完了していない場合は、最初のステップから続行してください

もちろん、実際の復号化プロセスはそれほど単純ではありません。たとえば、暗号化中に gzcompress が使用された場合、取得されたデータには何らかのバイナリが含まれます。これらのデータを一般のテキストエディタで開くと文字化けして表示され、保存時に一部のデータが失われます。解決策は非常に単純ですが面倒です。つまり、バイナリ (16 進) モードを使用して開いたり、変更したり、保存したりします。

以上がPHPのソースコードを暗号化するにはどうすればいいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート