ホームページ  >  記事  >  バックエンド開発  >  PHPのソースコードのクラックを防ぐ方法

PHPのソースコードのクラックを防ぐ方法

(*-*)浩
(*-*)浩オリジナル
2019-10-15 13:34:244493ブラウズ

独自の PHP コードを保護して暗号化します:

PHPのソースコードのクラックを防ぐ方法

コード難読化暗号化

実際の暗号化はカウントされません。具体的な実装アイデアは、コードを Base64 で暗号化し、次に Base64 の文字列に対して文字列マッピングを実行し (辞書の難読化をランダムに生成)、その後 eval がこのメソッドを実行することで、解読して復元することができます (学習を推奨) : PHP ビデオ チュートリアル )

はコードを次のように表します:

<?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;); 

 ?>

Distribute opcode

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

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

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

Swoole コンパイラー

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

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

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