ホームページ >バックエンド開発 >PHPの問題 >PHPでソースコードを保護する方法

PHPでソースコードを保護する方法

王林
王林オリジナル
2019-10-15 13:14:455979ブラウズ

PHPでソースコードを保護する方法

コード難読化暗号化

実際の暗号化はカウントされません。具体的な実装アイデアは、base64 です。コードを暗号化し、base64 で文字列マッピングを実行します (ランダムに生成された辞書難読化)

コードは次のように表されます:

<?php

 function RandAbc($length = "") { // 返回随机字符串 
  $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
  return str_shuffle($str); 
 } 

 $filename = &#39;index.php&#39;; //要加密的文件 
 $T_k1 = RandAbc(); //随机密匙1 
 $T_k2 = RandAbc(); //随机密匙2 
 $vstr = file_get_contents($filename); 
 $v1 = base64_encode($vstr); 
 $c = strtr($v1, $T_k1, $T_k2); //根据密匙替换对应字符。 
 $c = $T_k1.$T_k2.$c; 
 $q1 = "O00O0O"; 
 $q2 = "O0O000"; 
 $q3 = "O0OO00"; 
 $q4 = "OO0O00"; 
 $q5 = "OO0000"; 
 $q6 = "O00OO0"; 
 $s = &#39;$&#39;.$q6.&#39;=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$&#39;.$q1.&#39;=$&#39;.$q6.&#39;{3}.$&#39;.$q6.&#39;{6}.$&#39;.$q6.&#39;{33}.$&#39;.$q6.&#39;{30};$&#39;.$q3.&#39;=$&#39;.$q6.&#39;{33}.$&#39;.$q6.&#39;{10}.$&#39;.$q6.&#39;{24}.$&#39;.$q6.&#39;{10}.$&#39;.$q6.&#39;{24};$&#39;.$q4.&#39;=$&#39;.$q3.&#39;{0}.$&#39;.$q6.&#39;{18}.$&#39;.$q6.&#39;{3}.$&#39;.$q3.&#39;{0}.$&#39;.$q3.&#39;{1}.$&#39;.$q6.&#39;{24};$&#39;.$q5.&#39;=$&#39;.$q6.&#39;{7}.$&#39;.$q6.&#39;{13};$&#39;.$q1.&#39;.=$&#39;.$q6.&#39;{22}.$&#39;.$q6.&#39;{36}.$&#39;.$q6.&#39;{29}.$&#39;.$q6.&#39;{26}.$&#39;.$q6.&#39;{30}.$&#39;.$q6.&#39;{32}.$&#39;.$q6.&#39;{35}.$&#39;.$q6.&#39;{26}.$&#39;.$q6.&#39;{30};eval($&#39;.$q1.&#39;("&#39;.base64_encode(&#39;$&#39;.$q2.&#39;="&#39;.$c.&#39;";eval(\&#39;?>\&#39;.$&#39;.$q1.&#39;($&#39;.$q3.&#39;($&#39;.$q4.&#39;($&#39;.$q2.&#39;,$&#39;.$q5.&#39;*2),$&#39;.$q4.&#39;($&#39;.$q2.&#39;,$&#39;.$q5.&#39;,$&#39;.$q5.&#39;),$&#39;.$q4.&#39;($&#39;.$q2.&#39;,0,$&#39;.$q5.&#39;))));&#39;).&#39;"));&#39;; 

 $s = &#39;<?php &#39;."\n".$s."\n".&#39; ?>&#39;; 
 //echo $s; 
 // 生成 加密后的PHP文件 
 $fpp1 = fopen(&#39;temp_&#39;.$filename, &#39;w&#39;); 
 fwrite($fpp1, $s) or die(&#39;写文件错误&#39;); 

 ?>

文字化けを混乱させる

コード難読化変数にも 1 の原則と似たものがいくつかありますが、文字列を ASCII 127 から 255 までの人間以外の文字、およびエディターが認識する文字に変更します。理解できません。結果は 100% 正しいです。クラックされて復元されるのは時間の問題です。

オペコードの発行

コードを配布するのではなく、最初に PHP コードをプリコンパイルしてからオペコードを配布してください。PHP7 以降、opcache はこれを深く統合します。PHP7 以降は、この方法を使用してソース コードを保護できますが、オペコードによって逆コンパイルされ、クラックされます。

難読化と暗号化を使用して PHP 拡張機能を作成します

難読化と暗号化を使用して PHP 拡張機能を作成しますが、独自の暗号化を作成しない限り、オープンソースの PHP 拡張機能はクラックされてしまいます。アルゴリズムを使用して PHP コードを暗号化し、C 音声を使用して拡張クローズド ソースを作成します。他の人はあなたの暗号化とクラッキングのアイデアを知らないため、クラッキングされる可能性は非常に低いです。

Swoole コンパイラー

swoole によって生成されるものは、生成されたオペコードを取得し、暗号化を難読化するものです。これは素晴らしいものです。これを実行したい場合は、 zend エンジンが難読化および暗号化されたオペコードを認識することは不可能であるため、実際には zend を書き直す必要があり、サポートする zend エンジンも変更する必要があります。

推奨チュートリアル: PHP ビデオ チュートリアル

以上がPHPでソースコードを保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。